我有一個使用datagridview的windows窗體vb.net程序。我試圖找到一種方法來防止用戶在我的datagridview中輸入特殊字符(例如$,@,!,#,%,^,&)。當用戶輸入一個特殊字符時,我有一個適當的消息框來解釋他們的錯誤,然後我給他們提供一個默認值。除了一種防止特殊字符或符號的方法之外,我有一切工作。我想這樣的事情有工作,但我似乎無法找到阻止這種進入的任何方式:如何使用vb.net防止datagridview中的特殊字符
If (columnindex = 0) Then 'checking value for column 1 only
Dim cellString = DataGridView1.Rows(rowindex).Cells(columnindex).value
If cellString String.IsSymbol(cellString) = true Then
MessageBox.Show("Special Characters Not Allowed")
End If
DataGridView1.Rows(rowindex).Cells(columnindex).value = "Default Value"
Exit Sub
End If
這是附加一個句柄到DataGridView裏面的TextBox控件的最佳方法,但這種實現是有問題的,因爲你永遠不刪除的處理程序。每次你輸入控件時,處理程序都會被再次添加(因此會在添加處理程序時觸發多次 - 處理程序將在第10次單元格中觸發十次!!)。您需要保留對e.Control的引用並在該對象上調用RemoveHandler,然後執行AddHandler並更新您的引用。 –
是的,我知道,但我刪除了這部分代碼(我的錯誤)來簡化答案!我只是使用Try/Catch塊來RemoveHandler,而不是保留對e.Control的引用。答案已更新。 – tezzo
這也適用。但是,您不需要嘗試/捕獲。除非參數爲null,否則RemoveHandler永遠不會拋出異常。 'e.Control'可能在構造/銷燬期間爲空,所以'如果e.Control不是那麼那麼......'就足夠了。 –