2011-04-15 33 views
2

可能重複:
Direct access to DataGridView combobox in one click?的WinForms的DataGridView - 3次點擊所需編輯現有文本的單元格

我敢肯定,這種行爲是由設計,但我不覺得這是直觀的在許多情況下。

如果通過簡單地點擊與當前不在同一行的其中一個單元格的其中一個單元格來將光標移動到新行,第一次單擊會將您移至該行並突出顯示您單擊的整個單元格。第二次點擊選擇所有文本,就好像您想刪除它或覆蓋它一樣。您的第三次點擊將最終將光標定位在您點擊的文本內的位置。

是否有任何方法來改變行爲,以便用戶可以移動到不同的行並在第一次或至少第二次點擊之後內聯編輯現有文本?

編輯1:
所以下面給出的答案效果很好。如果您啓用了EditOnEnter模式,則無法選擇行的Microsoft討論網站上的問題似乎可以通過Visual Studio 2008解決。

我剩下的唯一問題是,當用戶移動到使用標籤的下一條記錄時或者如果他們點擊下一個單元格,則會立即選擇可能導致無意覆蓋的整個文本。有這個簡單的解決辦法嗎?

EDIT2:
你已經給了EDIT1的解決方案確實工作,有一個問題。在第一次點擊到不同的單元格後,光標將始終位於文本的末尾。我沒有看到這是一個非常糟糕的問題,所以我不會擔心試圖修復它。

+0

編輯我答你EDIT1:一部分。 – Priyank 2011-04-15 19:53:02

回答

2

將DataGridView控件的EditMode屬性更改爲「EditOnEnter」。

Direct access to DataGridView combobox in one click?

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/cab3c9eb-4c86-475e-8cbd-dee6b235765a/

[您進行修改部分答案示例]

http://www.pcreview.co.uk/forums/datagridviewtextboxeditingcontrol-dont-want-text-initially-sele-t2526222.html

this.myDataGrid.CellEnter += new 
DataGridViewCellEventHandler(myDataGrid_CellEnter); 

void myDataGrid_CellEnter(object sender, DataGridViewCellEventArgs e) 
{ 
if ((this.myDataGrid.Columns[e.ColumnIndex] is 
DataGridViewTextBoxColumn) || 
(this.myDataGrid.Columns[e.ColumnIndex] is 
DataGridViewComboBoxColumn)) 
{ 
this.myDataGrid.BeginEdit(false); 
} 
} 
相關問題