在c#的列表框中切换DisplayMember
本文关键字:DisplayMember 列表 | 更新日期: 2023-09-27 18:02:21
我正在尝试在c# Windows应用程序中切换列表框中的DisplayMember属性,在VS 2010中。
我目前有两个按钮来改变ListBox的DisplayMember,但我更希望有一个单独的按钮来切换这两个可用的。
在一个按钮中,我使用lstResults.DisplayMember = "Word";
另一个用
lstResults.DisplayMember = "Hooks";
效果很好,但是当我尝试使用
时If (lstResults.DisplayMember == "Word")
lstResults.DisplayMember = "Hooks";
else
lstResults.DisplayMember = "Word";
我跟踪了它,DisplayMember没有响应新的赋值。它不会在代码中被更改。但它确实在Listbox本身改变。因此,我最终将DisplayMember卡在代码中的"Word"上,并卡在实际显示中的"Hooks"上。
为了使事情变得更具挑战性,原来的按钮将无法工作,直到我删除ListBox并将其添加回表单。我已经清理和重建,没有任何变化。
我也试过
if (lstResults.DisplayMember.Equals("Word"))
这里有一个简单的解决方案,你只需要一个按钮,比如button2,并有一个点击处理程序
if (this.button2.Text == "Show ID")
{
this.comboBox1.DisplayMember = "Name";
button2.Text = "Show Name";
}
else
{
this.comboBox1.DisplayMember = "ID";
button2.Text = "Show ID";
}
其中comboBox1为组合框
使用Edward Islam的策略,但还有另一个问题,以同样的方式锁定ListBox的DisplayMember。当我附加事件selectedvaluechange时,DisplayMember不会改变,除非我给ListBox分配一个新的数据源。列表框使用"Hooks"作为DisplayMember,但代码显示"Word",我无法更改它。是什么像这样锁定了DisplayMember属性?
private void lstResults_SelectedIndexChanged(object sender, EventArgs e)
{
int sIndex = lstResults.SelectedIndex + 1;
int count = lstResults.Items.Count;
this.statusCount.Text = String.Format("{0} / {1}", sIndex, count);
string selection = lstResults.Text;
if (sIndex > 0)
{
int value = Hoot.ValueCalc.getValue(selection);
double probable = Hoot.Probability.getProbable(selection);
int relativeProbable = Hoot.Probability.getRelProbable(selection);
this.statusWordStats.Text = String.Format("Raw Score: {0} Probability: {1} (RP: {2})",
value, probable.ToString("F4"), relativeProbable.ToString());
}
}
我发现了第二个相关问题的解决方案。我逐渐将所有语句添加回来,直到我得到probability (double probable = Hoot.Probability.getProbable(selection);),这涉及到组合和大量内存。虽然该方法没有改变传递的变量,但我认为内存影响了内容,所以我修改了传递的参数。
我试着改变
string selection = lstResults.Text;
string selection = String.Copy(lstResults.Text);
相同的问题。
然后用
代替 HookSet selector = (HookSet)lstResults.SelectedItem;
string selection = String.Copy(selector.Word.ToString());
列表框的数据源是
List<HookSet>
。