我試圖在 SQL Management Studio 的 ColumnMappings 窗口中復制此行為: Image Here當您在目標單元格內(nèi)單擊時,類型從文本更改為組合框(看起來),當您離開該單元格時,它會從組合框中獲取所選值并更改回包含值的 textboxCell。它對該列中的每個單元格執(zhí)行此操作。因此,當我加載數(shù)據(jù)時,所有單元格都是文本框,當用戶在該列中輸入任何單元格時,我會這樣做:private void dgvwMapping_CellEnter(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 1) { string txt = dgvwMapping[e.ColumnIndex, e.RowIndex].Value.ToString(); DataGridViewComboBoxCell cbbxDestination = new DataGridViewComboBoxCell() { DataSource = new List<string>(someList) }; cbbxDestination.Value = txt; dgvwMapping[e.ColumnIndex, e.RowIndex] = cbbxDestination; } }到目前為止一切順利,如果我從一個單元格切換到另一個單元格一切正常,除非我單擊具有坐標 [1,1] 的單元格。唯一拋出“操作無效,因為它導致對 SetCurrentCellAddressCore 的重入調(diào)用”異常的是 columnIndex 等于 rowIndex 的異常。我已經(jīng)嘗試在 invoke 調(diào)用中包裝我重新分配 Cell Type 的行,如下所示:dgvwMapping.BeginInvoke(new MethodInvoker(delegate (){ dgvwMapping[e.ColumnIndex, e.RowIndex] = cbbxDestination;}));但它無限期地循環(huán)事件。即使將所有代碼都包裝在事件中也會使事件無限循環(huán)。我還沒有在 CellEndEdit 或 CellLeave 中編寫任何代碼。有人有建議嗎?也許我復制這種行為的方法并不是最好的。
1 回答

繁星點點滴滴
TA貢獻1803條經(jīng)驗 獲得超3個贊
你的問題:
當您在目標單元格內(nèi)單擊時,類型從文本更改為組合框(看起來),當您離開該單元格時,它會從組合框中獲取所選值并更改回包含該值的 textboxCell。
只是 DataGridViewComboBoxColumn 屬性的簡單樣式設置:
yourGridColumnComboBox.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
這將使它看起來像一個文本框,但當它具有可選項目的焦點時,它將顯示下拉按鈕。
- 1 回答
- 0 關注
- 85 瀏覽
添加回答
舉報
0/150
提交
取消