有难度!我只会webform的^_^,要不要?

解决方案 »

  1.   

    还有就是我想做个查询的,点击查询,弹出对话框,输入text,然后定位到grid中某一行
      

  2.   

    1.用select就可以三。
    2.复制简单三,就是再插入一行。剪切就是在复制的基础上删除原来的。粘贴就是在插入的新行上填入数据。
      

  3.   

    看下,对你是否有帮助
    http://dev.csdn.net/article/59/59988.shtm
      

  4.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp
      

  5.   

    大工程,和excel差不多
    高手
      

  6.   

    前三个搞定,我把事件都贴给你
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Xml;
    using System.IO;
    BindingManagerBase myBindingManagerBase;
    DataSet dsTemp = new DataSet();
    private System.Windows.Forms.MenuItem menuItem13;
    DataSet dsTemp2 = new DataSet();
    DataSet dsTemp3 = new DataSet();

    public recordEditor(Form1 parent,string RecordPath,string name)
    {
    InitializeComponent();
    RecordFile = RecordPath;
    //GridMenu();
    ds.ReadXml(RecordFile);
    if(ds.Tables.Count>0)
    {
    this.dataGrid1.DataSource = ds.Tables[0].DefaultView;
    myBindingManagerBase = BindingContext[ds.Tables[0]];
    }
    dsTemp2 = ds.Copy();
    dsTemp3 = ds.Copy();
    this.Text = name;
    if(RecordPath.IndexOf("\\")>0)
    {
    this.dataGrid1.CaptionText = RecordPath.Substring(RecordPath.LastIndexOf("\\")+1);
    }
    else this.dataGrid1.CaptionText = RecordPath;
    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    }
    public void delRows()
    {
    dsTemp3.Dispose();
    dsTemp3 = ds.Copy();
    try
    {
    int array = 0;
    for(int dsr=0;dsr<ds.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    if(this.dataGrid1.IsSelected(dsr))
    {
    for(;x<this.ds.Tables[0].Columns.Count;x++)
    {
    ds.Tables[0].Rows[dsr][x] = null;
    }
    array++;
    }
    }
    for(int delcell=0;delcell<array;delcell++)
    {
    for(int dsr=0;dsr<ds.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    for(;x<this.ds.Tables[0].Columns.Count;x++)
    {
    if(!ds.Tables[0].Rows[dsr].IsNull(x)) break;
    }
    if(x == this.ds.Tables[0].Columns.Count)
    {
    ds.Tables[0].Rows[dsr].Delete();
    break;
    }
    }
    }
    myBindingManagerBase = BindingContext[ds.Tables[0]];
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Source);
    MessageBox.Show(ex.Message);
    }
    }
    public void cutRows()
    {
    dsTemp3.Dispose();
    dsTemp3 = ds.Copy();
    try
    {
    dsTemp.Dispose();
    dsTemp = ds.Copy();
    int array = 0;
    for(int dsr=0;dsr<ds.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    if(this.dataGrid1.IsSelected(dsr))
    {
    for(;x<this.ds.Tables[0].Columns.Count;x++)
    {
    ds.Tables[0].Rows[dsr][x] = null;
    }
    array++;
    }
    else
    {
    for(;x<this.dsTemp.Tables[0].Columns.Count;x++)
    {
    dsTemp.Tables[0].Rows[dsr][x] = null;
    }
    }
    }
    for(int delcell=0;delcell<ds.Tables[0].Rows.Count-array;delcell++)
    {
    for(int dsr=0;dsr<dsTemp.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    for(;x<this.dsTemp.Tables[0].Columns.Count;x++)
    {
    if(!dsTemp.Tables[0].Rows[dsr].IsNull(x)) break;
    }
    if(x == this.dsTemp.Tables[0].Columns.Count)
    {
    dsTemp.Tables[0].Rows[dsr].Delete();
    break;
    }
    }
    }
    for(int delcell=0;delcell<array;delcell++)
    {
    for(int dsr=0;dsr<ds.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    for(;x<this.ds.Tables[0].Columns.Count;x++)
    {
    if(!ds.Tables[0].Rows[dsr].IsNull(x)) break;
    }
    if(x == this.ds.Tables[0].Columns.Count)
    {
    ds.Tables[0].Rows[dsr].Delete();
    break;
    }
    }
    }
    myBindingManagerBase = BindingContext[ds.Tables[0]];
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
      

  7.   

    public void copyRows()
    {
    try
    {
    dsTemp.Dispose();
    dsTemp = ds.Copy();
    int array = 0;
    for(int dsr=0;dsr<ds.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    if(!this.dataGrid1.IsSelected(dsr))
    {
    for(;x<this.dsTemp.Tables[0].Columns.Count;x++)
    {
    dsTemp.Tables[0].Rows[dsr][x] = null;
    }
    array++;
    }
    }
    for(int delcell=0;delcell<array;delcell++)
    {
    for(int dsr=0;dsr<dsTemp.Tables[0].Rows.Count;dsr++)
    {
    int x = 0;
    for(;x<this.dsTemp.Tables[0].Columns.Count;x++)
    {
    if(!dsTemp.Tables[0].Rows[dsr].IsNull(x)) break;
    }
    if(x == this.dsTemp.Tables[0].Columns.Count)
    {
    dsTemp.Tables[0].Rows[dsr].Delete();
    break;
    }
    }
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    } }
    public void pasteRows()
    {
    dsTemp3.Dispose();
    dsTemp3 = ds.Copy();
    try
    {
    int ColumnNumberDataGrid = this.dataGrid1.CurrentCell.RowNumber;  for(int x=this.dsTemp.Tables[0].Rows.Count-1;x>=0;x--)
    { DataRow r = ds.Tables[0].NewRow();
    for(int z=0;z<ds.Tables[0].Columns.Count;z++)
    {
    r[z] = dsTemp.Tables[0].Rows[x][z].ToString();
    } ds.Tables[0].Rows.InsertAt(r,ColumnNumberDataGrid);
    ds.WriteXml(RecordFile);
    ds.Tables[0].Rows.Clear();
    ds.ReadXml(RecordFile);
    this.dataGrid1.DataSource = ds.Tables[0].DefaultView;
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
    public void save()
    {
    try
    {
    dsTemp2.Dispose();
    dsTemp2 = ds.Copy();
    ds.WriteXml(RecordFile);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    public void search()
    {
    FindDG f1 = new FindDG();

    if(f1.ShowDialog() == DialogResult.OK)
    {
    if(f1.SearchWord == "")
    {
    return;
    }
    int d=0,d2=0;
    bool b = true;
    for(;d<ds.Tables[0].Rows.Count && b;d++)
    {
    d2 = 0;
    for(;d2<ds.Tables[0].Columns.Count;d2++)
    {
    if(ds.Tables[0].Rows[d][d2].ToString().ToLower() == f1.SearchWord.ToLower())
    {
    b = false;
    break;
    }
    }
    }
    if(d != ds.Tables[0].Rows.Count)
    {
    this.dataGrid1.Select(d-1);
    // System.Windows.Forms.DataGridCell selectedCell = dataGrid1.CurrentCell;
    // object selectedItem = this.dataGrid1[selectedCell.RowNumber, selectedCell.ColumnNumber];
    // this.dataGrid1.CurrentCell =new DataGridCell(selectedCell.RowNumber,selectedCell.ColumnNumber);
    }
    else MessageBox.Show("Can't Find!");
    }
    }
    private void dataGrid1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(e.Button == MouseButtons.Right)
                {
    int i = this.dataGrid1.HitTest(e.X, e.Y).Row;
    if(i>=0)
    {
    if (this.dataGrid1.IsSelected(i))
    this.dataGrid1.UnSelect(i);
    else
    this.dataGrid1.Select(i);
    }
    }
    } private void dataGrid1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(e.Button == MouseButtons.Right)
    {
    int i = this.dataGrid1.HitTest(e.X, e.Y).Row;
    if(i>=0)
    {
    this.dataGrid1.Select(i);
    }
    }
    } private void menuItem11_Click(object sender, System.EventArgs e)
    {
    copyRows();
    } private void menuItem13_Click(object sender, System.EventArgs e)
    {
    dsTemp3.WriteXml(RecordFile); 
    ds.Tables[0].Rows.Clear();
    ds.ReadXml(RecordFile);
    this.dataGrid1.DataSource = ds.Tables[0].DefaultView;
    } private void menuItem1_Popup(object sender, System.EventArgs e)
    {
    if(this.dsTemp3.Tables[0].Rows.Count !=ds.Tables[0].Rows.Count)
    {
    this.menuItem13.Enabled = true;
    }
    else
    {
    bool b=true;
    int x=0,y=0;
    for(;x<this.dsTemp3.Tables[0].Rows.Count&&b;x++)
    {
    for(;y<this.dsTemp3.Tables[0].Columns.Count;y++)
    {
    if(this.dsTemp3.Tables[0].Rows[x][y].ToString()!=this.ds.Tables[0].Rows[x][y].ToString())
    {
    b = false;
    this.menuItem13.Enabled = true;
    break;
    }
    }
    }
    if(x==this.dsTemp3.Tables[0].Rows.Count && y == this.dsTemp3.Tables[0].Columns.Count)
    {
    this.menuItem13.Enabled = false;
    }
    }
    } }
    }