【发布时间】:2015-05-28 06:05:58
【问题描述】:
我通过子类化基本 NumericUpDown 并添加以下方法创建了一个十六进制 NumericUpDown 控件:
protected override void UpdateEditText()
{
this.Text = "0x" + ((int) Value).ToString("X2");
}
这很好用。该控件现在以以下格式显示值:
0x3F
这正是我所追求的。
但有一件事困扰着我:每次分配 Text 属性时,都会抛出 System.FormatException。这似乎并没有影响控件的功能,但我仍然认为它很难看。
这是调用栈的顶部:
MyAssembly.dll!HexNumericUpDown.UpdateEditText() 第 31 行 C# System.Windows.Forms.dll!System.Windows.Forms.NumericUpDown.ValidateEditText() 未知 System.Windows.Forms.dll!System.Windows.Forms.UpDownBase.Text.set(string value) Unknown
我可以忽略这个异常吗?或者有没有一种干净的方法来摆脱这个?
【问题讨论】:
-
您是否在 TextChanged 事件上运行了某些东西,试图将字符串转换回整数?
-
“每次分配 Text-property 时,都会抛出 System.FormatException”但是在哪里?发布堆栈跟踪。
-
完成。我已经添加了堆栈跟踪。
-
文本无效。您应该覆盖 ValidateEditText 并允许使用十六进制字符串