radgridview(telerik winforms)接受数字



我正在尝试一个包含多列的radgridview,其中一列是电话号码,应该只接受数字。这是我代码的一部分:

private void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
if (e.Column.Name == "column1")
{
var editor = e.ActiveEditor as RadTextBoxEditor;
var element = editor.EditorElement as RadTextBoxEditorElement;
element.TextBoxItem.KeyPress -= TextBoxItem_KeyPress;
element.TextBoxItem.KeyPress += TextBoxItem_KeyPress;
}
}
private void TextBoxItem_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}

当我第一次点击列1中的一个单元格时,它就工作了。但是,当我想编辑选中的一个单元格时(不点击(,如果我按下任何键(甚至是非数字(,它会接受第一个键。显然,CellEditorInitialized是在第一次按键后激发的,这是不需要的。你能帮我解决这个问题吗?

Telerik UI for WinForms套件的RadGridView提供GridViewMaskBoxColumn。它允许对文本数据进行限制性编辑。我相信它会更适合您的电话专栏:https://docs.telerik.com/devtools/winforms/controls/gridview/columns/column-types/gridviewmaskboxcolumn

可以使用掩码和掩码类型属性将掩码设置为GridViewMaskBoxColumn。您可以在RadMaskEditBox文档部分找到有关这些属性可能值的更多信息:https://docs.telerik.com/devtools/winforms/controls/editors/maskededitbox/getting-startedhttps://docs.telerik.com/devtools/winforms/controls/editors/maskededitbox/standard-masks

我希望这些信息能有所帮助。

最新更新