2010-07-05 41 views

回答

7

您需要使用的DataGridView的EditingControlShowing事件編輯任何單元格的內容在列。使用此事件可以觸發特定單元格中的按鍵事件。在按鍵事件中,您可以執行一個自動將小寫字母轉換爲大寫字母的規則。

下面是實現這一目標的步驟:

在EditingControlShowing事件看用戶是否在要執行這個規則列。說你列在網格第2列

private void TestDataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
     { 
     if(TestDataGridView.CurrentCell.ColumnIndex.Equals(1)) 
     { 
      e.Control.KeyPress += Control_KeyPress; // Depending on your requirement you can register any key event for this. 
     } 
    } 

private static void Control_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     // Write your logic to convert the letter to uppercase 
    } 

如果要設置列的文本框控件的CharacterCasing財產,那麼你就可以做到這一點,其中KeyPress事件登記在上面的代碼,這是做在檢查列索引的'if'塊中。在這種情況下,您可以避免KeyPress事件。

,可以通過以下方式進行:

if(e.Control is TextBox) 
     { 
      ((TextBox) (e.Control)).CharacterCasing = CharacterCasing.Upper; 
     } 
+0

我覺得DataGridView的應及時更換與你的網格的名稱在if(DataGridView ...語句。 – shindigo 2011-06-15 15:38:59

+0

由於我不喜歡對列索引進行硬編碼,我選擇引用列的'Name'屬性來查看它是否是我想要的列。而不是if(DataGridView.CurrentCell.ColumnIndex.Equals(1)),請使用:if(myDGV.CurrentCell.OwningColumn.Name ==「MyCol」)。可能效率較低,但更容易維護。 – shindigo 2011-06-15 15:46:36

+0

@shindigo:同意。 DataGridView是一個類名,我不會實時使用,這是在這裏完成的,因爲我正在舉例說明如何去做。是的,我從來沒有在我的項目中使用這樣的名稱,每個網格都會根據使用情況命名。無論如何將改變她的名字以及:) – JPReddy 2011-06-16 09:02:52

2

目前我所知道的,但如果你能得到接入列(這是一個文本框)的編輯控制你也可能設置CharacterCasing屬性。

0
DataGridView中的

使用EditingControlShowing事件來編輯內容

後適用的條件特定列

private void dgvGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
    { 
     if (dgvGrid.CurrentCell.ColumnIndex == 0 || dgvGrid.CurrentCell.ColumnIndex == 2) 
      { 
      if (e.Control is TextBox) 
       { 
       ((TextBox)(e.Control)).CharacterCasing = CharacterCasing.Upper; 
       } 
      } 
    } 

快樂編碼

相關問題