【发布时间】:2010-02-17 15:48:18
【问题描述】:
好的,所以我正在尝试使用多个按钮将项目从一个列表框移动到另一个列表框,即
我有 2 个按钮 cmdRight 和 cmdRight2 在表单加载时都被禁用
如果用户在第一个列表框中选择单个项目,则启用 cmdRIght 按钮但仍禁用 cmdRight2,如果用户在第一个列表框中选择多个项目,则启用 cmdRight2 按钮但禁用 cmdRight。
我有移动按钮可以工作,但我遇到的问题是在使用 cmdRight2 按钮移动多个项目后,cmdRight 按钮启用(它不应该只在选择列表框中的单个项目后启用)。我已经尝试了许多 if 语句等,但它仍然会发生。
我是 C# 新手,因此我们将不胜感激。
谢谢
private void lbList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.lbList1.SelectedItems != null)
{
cmdRight.Enabled = true; //enable cmdRight
cmdClear.Enabled = true; //enable cmdClear
if (this.lbList1.SelectedItems.Count > 1)//if multiple items selected
{
cmdRight.Enabled = false;
cmdRight2.Enabled = true; //enable cmdRight2
}
}
}
private void cmdRight2_Click(object sender, EventArgs e)
{
foreach (int i in lbList1.SelectedIndices)
{
lbList2.Items.Add(lbList1.Items[i].ToString());
}
while (lbList1.SelectedItems.Count > 0)
{
lbList1.Items.Remove(lbList1.SelectedItems[0]);
}
cmdRight2.Enabled = false;
}
private void cmdRight_Click(object sender, EventArgs e)
{
lbList2.Items.Add(lbList1.SelectedItem); //Add selected item from list1 to list2
lbList1.Items.Remove(lbList1.SelectedItem);//remove the selected item in list1
cmdRight.Enabled = false; //disable cmdRight
}
【问题讨论】:
-
您是否在每个函数的开头放置断点以查看它们被调用的顺序?或者至少,每次将 cmdRight.Enabled 设置为 true 时都会有一个断点。
-
这不是您问题的答案,但为什么不将两个按钮组合起来(通过简单地消除 cmdRight 并保留 cmdRight2)?显然我不知道你的设计,但它可能会解决你的问题。
-
我尝试了断点,由于某种原因,if 语句“if (this.lbList1.SelectedItems != null)”似乎总是正确的。即使没有选择任何内容
-
Matthew:唯一的问题是它是我的任务的一部分,我必须保持设计相同,有 2 个按钮 :-(