当没有选择任何内容时,Listbox控件的Text属性返回字符串

时间:2014-12-08 18:49:16

标签: c# listbox

listBox_groupmakingrepairs是我表单上的列表框控件。首次加载表单时,列表框中没有选择任何内容,并且以下“if”语句中的代码将运行,因为条件为真。

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'的值时,它是“Cell”。然而在表格上,列表框显然没有选择任何内容。

我是否错误地使用了Listbox控件的Text属性?或者这是一个错误?或者我错过了一些完全明显的东西?

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

2 个答案:

答案 0 :(得分:0)

这是因为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

所以总是在这种情况下不要忘记重置文本属性。希望这会有所帮助...

答案 1 :(得分:0)

也许我有点慢,但最终我意识到微软是创造者,所以对他们来说,我会寻求答案。

这是我发现的:

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

listBox_groupmakingrepairs.Text = "Cell";

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

listBox_groupmakingrepairs.ClearSelected();

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

string SelectedText = listBox_groupmakingrepairs.Text;

但是,正如我在上面的原始问题中所描述的那样,当我在列表框中选择时没有选择Text属性时,它包含文本。但微软称“这个属性会返回第一个选定项目的文本。”这是假的。它应该返回null,因为没有选择...但它返回了未选择的文本。

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

“我是否错误地使用了Listbox控件的Text属性?” - 答案是肯定的。

“或者这是一个错误吗?” - 是的,是的。