前三个搞定,我把事件都贴给你 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();
2.复制简单三,就是再插入一行。剪切就是在复制的基础上删除原来的。粘贴就是在插入的新行上填入数据。
http://dev.csdn.net/article/59/59988.shtm
高手
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);
}
}
{
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;
}
}
} }
}