列表框控件的 Text 属性在未选择任何内容时返回字符串

本文关键字:任何内 选择 字符串 返回 控件 Text 属性 列表 | 更新日期: 2023-09-27 18:33:44

listBox_groupmakingrepairs 是窗体上的列表框控件。首次加载窗体时,列表框中未选择任何内容,并且将运行以下"if"语句中的代码,因为条件为 true。

if (listBox_groupmakingrepairs.Text == "")
{
   Error = "You must indicate what group will be making the repairs.";
   Con = listBox_groupmakingrepairs;
}

但是,如果我运行以下代码...

listBox_groupmakingrepairs.Text = "Cell";

后跟此代码...

listBox_groupmakingrepairs.ClearSelected();

列表框不会选择任何内容,但它会导致上面的第一个代码片段为 false,并且不会运行"if"块中的代码。当我逐步检查'listBox_groupmakingrepairs的值时。文本'它是"单元格"。然而,在窗体上,列表框显然没有选择任何内容。

我是否正确地使用了列表框控件的 Text 属性?还是这是一个错误?还是我错过了一些完全明显的东西?

看到它的方式,我有一个属性(文本(,它似乎在大多数情况下都运行良好。但在某些情况下,它返回的值不再是正确的值。为什么 Text 属性返回一个已更改的旧值?对于任何可以向我解释的人来说,这在逻辑上有意义吗?

列表框控件的 Text 属性在未选择任何内容时返回字符串

这是因为 C# winform 控件的 ListBox 控件分别处理 Text 属性和 SelectedItem ,但在某种程度上是一起处理的。

它的工作方式如下:

IF [SelectedItem is True i.e. Item is selected] THEN
    Text property = SelectedItem.ToString()
ELSE IF [SelectedItem is False i.e. No Item is selected] THEN
    Text Property will still assume its current value (or in a way previous value) unless its manually reset

因此,在这种情况下,始终不要忘记重置 Text 属性。希望这有帮助...

也许我有点慢,但最终我意识到Microsoft是创造者,所以我会去找他们的答案。

这是我发现的:

根据Microsoft,我使用的以下代码是在列表框控件中选择文本的正确方法。

listBox_groupmakingrepairs.Text = "Cell";

然后,同样根据Microsoft,我使用的以下代码是取消选择列表框中所有项的正确方法。

listBox_groupmakingrepairs.ClearSelected();

最后,根据比尔盖茨(见上面的两个链接(,Text 属性也是检索第一个选定项文本的正确方法。

string SelectedText = listBox_groupmakingrepairs.Text;

但是,正如我在上面的原始问题中所描述的,当我评估 Text 属性时,当列表框中未选择任何内容时,它包含文本。但Microsoft显示"此属性返回第一个选定项的文本"。这是错误的。它应该返回 null,因为没有选择任何内容...但它返回了未选择的文本。

所以在我的原始帖子中回答我的两个问题:

"我是否错误地使用了列表框控件的 Text 属性?"-- 答案是肯定的。

"或者这是一个错误?"——是的,是的。