c# 如果我在重置文本后将其设置为最小值,Numericupdown 文本框不会显示值

问题描述 投票:0回答:3

如果我将文本框的值设置为 1(最小值为 1),此代码将不起作用。

numStartChannel.Minimum = 1;
numStartChannel.ResetText();
numStartChannel.Value = 1;

该控件内部实际上具有正确的值,但在表单上仍然显示空白。请注意,重置实际上是在单击事件中运行的,而不是直接在值设置之前运行。

这段代码确实有效,但我不知道为什么。 numStartChannel.最小值 = 1; numStartChannel.ResetText(); numStartChannel.Value = 2; numStartChannel.Value = 1;

最后,这段代码不起作用:

numStartChannel.Minimum = 1;
numStartChannel.ResetText();
numStartChannel.Value = 1;
numStartChannel.Value = 1;

任何人都可以解释这种行为吗? C# Visual Studio 2022。

c# winforms numericupdown
3个回答
3
投票

我已经尝试过你的代码,结果相同。

当我删除

numStartChannel.ResetText();
时,它对我有用。

        numStartChannel.Minimum = 1;
        numStartChannel.Value = 2;

我的解释是

resetText()
将文本设置为默认值。这是“0”。这低于您的最低要求。

这也适合我:

        numStartChannel.Minimum = 0;
        numStartChannel.ResetText();
        numStartChannel.Value = 1;

如果您在重置后使用

numStartChannel.Value++;
,则值会正确显示。

我目前不知道为什么重置文本后文本没有更新。我认为这可能是控件本身的错误。

为什么需要使用

resetText
?设置值会更改文本。

使用的.NET框架:4.7.2


2
投票

答案是,如果清除控件的文本,它不会清除值。因此,当我尝试再次将值设置回其中以显示时,它不会触发控件来知道该值已更新,因为它没有。不幸的解决方案是将 .Text 值设置为任何非空值,例如空格。注意:intellisense 声称不存在这样的属性,但实际上确实存在。之后设置该值会导致控件正确重绘。


1
投票

我个人从未认为 NUD 上的 Text 属性从代码的角度来看有任何用处;仅使用 Value

更符合逻辑

您想将 NUD 重置为最小值吗?

NUD.Value = NUD.Minimum;

避免使用文本;如果您想要数字字符串,您可以自己字符串化该值:

NUD.Value.ToString("F3"); //eg "123.457" if Value is 123.456789
© www.soinside.com 2019 - 2024. All rights reserved.