การ Copy data สามารถทำได้หลายแบบ แบบง่าย ๆ
1. ใช้ datarow เพื่อ control copy paste
2. ใช้ Tool contextMenustrip
e.g. Tool contextMenustrip
Add contextMenustrip in form Add type here >> Copy, Paste
use solution >> Clipboard
Events Copy
if (dgvCharge.Rows.Count > 0) { var newline = System.Environment.NewLine; var tab = "\t"; var clipboard_string = new StringBuilder(); for (int i = 0; i < dgvCharge.Columns.Count; i++) { clipboard_string.Append(dgvCharge.CurrentRow.Cells[i].Value + tab); } Clipboard.SetText(clipboard_string.ToString()); }
or Copy rows select
var clipboard_string = new StringBuilder(); DataGridViewRow dgr = dgvCharge.CurrentRow; for (int j = 0; j < dgvCharge.ColumnCount; j++) { if (dgr.Cells[j].Selected) { if (dgvCharge.Columns[j].Name.ToString() == "mat_code" || dgvCharge.Columns[j].Name.ToString() == "max_weight") { clipboard_string.Append(dgvCharge.Columns[j].Name.ToString() + tab + dgvCharge.CurrentRow.Cells[j].Value); clipboard_string.AppendLine(""); } } } if (clipboard_string.Length > 0) { Clipboard.SetText(clipboard_string.ToString()); }
Evenst Paste
if (dgvCharge.Rows.Count > 0) { string s = Clipboard.GetText(); string[] lines = s.Split('\t'); }
Insert Rows
DataRow dr; int i; int selectedRowIndex = -1; if (dgvCharge.SelectedCells.Count > 0) { selectedRowIndex = dgvCharge.SelectedCells[0].RowIndex; this.bdsPB1.Position = selectedRowIndex; } DataRowView drv = this.bdsPB1.Current as DataRowView; DataRow cdr = drv.Row; int i = this._dsData.Tables[this._sqlManager.Tablecharge1].Rows.IndexOf(cdr); dr = this._dsData.Tables[this._sqlManager.Tablecharge1].NewRow(); dr["basket_no"] = txtPB1.Text; dr["charge_table_no"] = cobCharge1.SelectedValue.ToString(); dr["min_weight"] = "0"; this._dsData.Tables[this._sqlManager.Tablecharge].Rows.InsertAt(dr, i); if (selectedRowIndex >= 0) { if (selectedRowIndex == 0) { dgvCharge.Rows[selectedRowIndex].Cells["layer"].Value = dgvCharge.Rows[selectedRowIndex + 1].Cells["layer"].Value; } else { dgvCharge.Rows[selectedRowIndex].Cells["layer"].Value = dgvCharge.Rows[selectedRowIndex - 1].Cells["layer"].Value; } } else { selectedRowIndex = dgvCharge.SelectedCells[0].RowIndex; if (dgvCharge.RowCount > 1 && dgvCharge.RowCount > selectedRowIndex) { dgvCharge.Rows[selectedRowIndex - 1].Cells["layer"].Value = dgvCharge.Rows[selectedRowIndex].Cells["layer"].Value; dr["layer"] = dgvCharge.Rows[selectedRowIndex].Cells["layer"].Value; } }