DataGridView貼上複製功能

2021-09-18 08:25:31 字數 2275 閱讀 6840

鑑於網上眾多的有關datagridview貼上功能的demo都不好理解,找了一圈也沒有乙個好用的,我決定自己實現乙個簡單的,拿來就能用的demo。

1.previewkeydown會監聽按鍵的按下,只需要判斷ctrl和v同事按下就可以

//在datagridview的previewkeydown事件中

private void datagridview1_previewkeydown(object sender, previewkeydowneventargs e)

}

paste()方法的**

public int paste(datagridview d**, string pastetext, int kind, bool b_cut)

if (string.isnullorempty(pastetext))

return -1;

int rownum = 0;

int columnnum = 0;

//獲得當前剪貼簿內容的行、列數

for (int i = 0; i < pastetext.length; i++)

if (pastetext.substring(i, 1) == "\n")

}object[,] data;

//貼上板上的資料來自於excel時,每行末都有\n,在datagridview內複製時,最後一行末沒有\n

if (pastetext.substring(pastetext.length - 1, 1) == "\n")

columnnum = columnnum / (rownum + 1);

data = new object[rownum + 1, columnnum + 1];

string rowstr;

//對陣列賦值

for (int i = 0; i < (rownum + 1); i++)

//最後一行的最後一列

if (colindex == columnnum && pastetext.indexof("\r") == -1)

//其他行列

if (colindex != columnnum)

if (rowstr == string.empty)

rowstr = null;

data[i, colindex] = rowstr;

}//擷取下一行資料

pastetext = pastetext.substring(pastetext.indexof("\n") + 1);

}/*檢測值是否是列頭*/

/*//獲取當前選中單元格所在的列序號

int columnindex = d**.currentrow.cells.indexof(d**.currentcell);

//獲取獲取當前選中單元格所在的行序號

int rowindex = d**.currentrow.index;*/

int columnindex = -1, rowindex = -1;

int columnindextmp = -1, rowindextmp = -1;

if (d**.selectedcells.count != 0)

//取到最左上角的 單元格編號

foreach (datagridviewcell cell in d**.selectedcells)

else

columnindextmp = columnindex;

rowindex = cell.rowindex;

if (rowindex > rowindextmp)

else

rowindextmp = rowindex;

}if (kind == -1)

如果行數超過當前列表行數

//if (rowindex + rownum + 1 > d**.rowcount)

////}

//如果列數超過當前列表列數

if (columnindex + columnnum + 1 > d**.columncount)

}//增加超過的行列

for (int j = 0; j < (rownum + 1); j++)}}

}}

//清空剪下板內容

if (b_cut)

clipboard.clear();

return 1;

}catch

}

2.複製功能只需要更改乙個屬性clipboardcopymode為disable以外的屬性就可以了

DataGridView資料複製貼上

剪貼資料到剪貼簿上 private void setdatagridviewtoclipboard 將剪貼版上的資料儲存到datagridview上,不能從中間貼上 private void setclipboardtodatagridview int insertrowindex datagrid...

datagridview合併表頭

1.功能說明 將連續的多個列合併成乙個新列。2.不足之處 不能合併多層。比如下圖這樣的功能是沒有的。3.使用參考.在form的建構函式裡寫下如下 utility.exgridview.isenlarged false 在datagridview的cellpaiting事件中寫如下 utility.e...

datagridview資料繫結

sqlconnection conn new sqlconnection conn.connectionstring server local uid sa pwd sa database databasename sqlcommand cmd new sqlcommand cmd.commandt...