winforms 使数值可空向上向下c#

pkwftd7m  于 2023-01-14  发布在  C#
关注(0)|答案(2)|浏览(162)

在c#中,有没有办法从数值上下工具的默认值0中移除0?如果用户没有设置数值上下工具,我需要默认为null“”,因为当点击保存时,它总是会传递一个0。我试过这个方法,但没有什么乐趣

private void nud_HouseNumber_Validated(object sender, EventArgs e)
{    
    if (nud_HouseNumber.Text == "0")
    {
        nud_HouseNumber.Text = "" ;
        return;
    }
}
mctunoxg

mctunoxg1#

NumericUpDown Winfoms控件中的Text属性不应该在您的代码中使用。MS文档说明;
https://msdn.microsoft.com/en-us/library/cs40s7ds(v=vs.110).aspx
此API支持产品基础结构,不应直接从代码中使用
Text对NumericUpDown控件的外观没有影响;因此,它隐藏在设计器中,不会被智能感知看到。
该控件使用了一个Value属性,它是decimal类型的。因此,decimal不能为空,所以你不能将其设置为空,或者“”,就像你在代码中实际尝试做的那样(这不是空!)
我建议您创建自己的控件版本。
另请参阅:Windows Forms - customizing NumericUpDown to be nullable

kiayqfof

kiayqfof2#

你可以使用Text属性。在我看来并不优雅,但它很有效。例如:

decimal? myValue = null;
if (numericUpDown.Text != null)
    myValue = numericUpDown.Value;

相反,设置该值将是:

numericUpDown.Value = myValue ?? -1;
if (numericUpDown.Value == -1)
    numericUpDown.Text = null;

相关问题