我希望能夠將指定列的CharacterCasing設置爲大寫。c#如何在DataGridView的指定列中強制執行大寫?
我找不到任何地方的解決方案將字符轉換爲大寫,因爲它們是鍵入的。
非常感謝所有幫助
我希望能夠將指定列的CharacterCasing設置爲大寫。c#如何在DataGridView的指定列中強制執行大寫?
我找不到任何地方的解決方案將字符轉換爲大寫,因爲它們是鍵入的。
非常感謝所有幫助
您需要使用的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;
}
目前我所知道的,但如果你能得到接入列(這是一個文本框)的編輯控制你也可能設置CharacterCasing屬性。
使用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;
}
}
}
快樂編碼
我覺得DataGridView的應及時更換與你的網格的名稱在if(DataGridView ...語句。 – shindigo 2011-06-15 15:38:59
由於我不喜歡對列索引進行硬編碼,我選擇引用列的'Name'屬性來查看它是否是我想要的列。而不是if(DataGridView.CurrentCell.ColumnIndex.Equals(1)),請使用:if(myDGV.CurrentCell.OwningColumn.Name ==「MyCol」)。可能效率較低,但更容易維護。 – shindigo 2011-06-15 15:46:36
@shindigo:同意。 DataGridView是一個類名,我不會實時使用,這是在這裏完成的,因爲我正在舉例說明如何去做。是的,我從來沒有在我的項目中使用這樣的名稱,每個網格都會根據使用情況命名。無論如何將改變她的名字以及:) – JPReddy 2011-06-16 09:02:52