【发布时间】:2012-08-20 00:07:32
【问题描述】:
我有一个 ParameterItem 类,用于将一些项目添加到列表框:
class ParameterItem
{
public string Name { get; set; }
public string Value { get; set; }
public ParameterItem(string name, string value)
{
Name = name;
Value = value;
}
public override string ToString()
{
return Name + " = " + Value;
}
public override bool Equals(object obj)
{
if (obj is ParameterItem)
return (Name == ((ParameterItem)obj).Name);
return false;
}
public override int GetHashCode()
{
return Name.ToLowerInvariant().GetHashCode();
}
}
您可以使用两个文本框(名称和值)将项目添加到列表框。当您单击列表框中的某个项目时,文本框将填充 ParameterItem 的名称和值。我有以下代码来更改列表框中所选 ParameterItem 的内容:
private void btnSaveParameter_Click(object sender, EventArgs e)
{
ParameterItem currentParameter = new ParameterItem(textParameterName.Text,
textParameterValue.Text);
// If we already have the parameter set then edit it.
if (lstbxSetParameters.Items.Contains(currentParameter))
{
((ParameterItem)lstbxSetParameters.SelectedItem).Value = currentParameter.Value;
lstbxSetParameters.;
}
// If it's not set yet then add it to the listbox.
else
{
lstbxSetParameters.Items.Add(currentParameter);
textParameterName.Text = String.Empty;
textParameterValue.Text = String.Empty;
}
}
问题是,即使我可以更改所选ParameterItem的内容,在列表框中,它仍然看起来没有改变。
例如我在列表框中有一个参数:
TestParameter = 10
我将 ParameterItem 更改为
TestParameter = 5
但在列表框中它仍然看起来像
TestParameter = 10
即使它已经改变了。
我该如何解决这个问题?我认为列表框项应该再次调用 ParameterItem 的ToString() 方法并刷新自身但是如何?
或者有没有更好的方法在列表框中添加键值对?
【问题讨论】:
-
您的
SelectedItem并不总是与 currentParameter 匹配的那个 -
当列表框中选择的项目发生变化时,文本框中的值也会发生变化,我没有添加那部分。我想这就是你说它不会永远是那个的原因。
标签: c# listbox listboxitem