그리드에서 엑셀 데이타등을 붙여 넣기를 할때 코드.
클립보드를 읽어서 루프를 도는 방식도 있으나
// 다중 선택
gridView.OptionsSelection.MultiSelect = true;
// 다중선택시 cell 선택으로 설정
gridView.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CellSelect;
// 붙여넣기시 update
gridView.OptionsClipboard.PasteMode = DevExpress.Export.PasteMode.Update;
//셀이 편집중이어도 ctrl+v가 정상적으로 되도록 Form에서 ProcessCmdKey override
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.V))
{
gridView.PasteFromClipboard();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
참고로)
### 클립보드to그리드
private void btnPaste_Click(object sender, EventArgs e)
{
string[] data = Clipboard.GetText().Split('\n');
if (data.Length < 1) return;
foreach (string row in data)
{
AddRow(row);
}
}
void AddRow(string data)
{
if (data == string.Empty) return;
string[] rowData = data.Split(new char[] { '\r', '\x09' });
DataRow newRow = _dtProj.NewRow();
for (int i = 0; i < rowData.Length; i++)
{
if (i >= _dtProj.Columns.Count) break;
newRow[i] = rowData[i];
}
_dtProj.Rows.Add(newRow);
}
출처: https://simplain.tistory.com/352 [외부기억 外部記憶 External Memories:티스토리]