我有一个ListView和一个按钮,从列表视图中删除项目。当他们没有选择任何项目时,该按钮需要被禁用,但是当它们被选中时被启用。我试过事件的不同组合,但无法找到一个正确禁用按钮...C# - ListView项选择队列
当我关闭按钮时,列表视图失去焦点,我不能因为要删除的项点击按钮,他们需要在列表视图之外单击。
我希望有人在Visual Studio中有更多的经验可以帮助我找到正确的listview事件组合,以根据是否启用和禁用按钮选择一个项目。
我有一个ListView和一个按钮,从列表视图中删除项目。当他们没有选择任何项目时,该按钮需要被禁用,但是当它们被选中时被启用。我试过事件的不同组合,但无法找到一个正确禁用按钮...C# - ListView项选择队列
当我关闭按钮时,列表视图失去焦点,我不能因为要删除的项点击按钮,他们需要在列表视图之外单击。
我希望有人在Visual Studio中有更多的经验可以帮助我找到正确的listview事件组合,以根据是否启用和禁用按钮选择一个项目。
只需订阅事件ItemSelectionChanged
这样的(例如,在构造函数):
listView1.ItemSelectionChanged += OnListViewItemSelectionChanged;
而且在事件的方法启用/禁用喜欢你的按钮:
private void OnListViewItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
button1.Enabled = (listView1.SelectedItems.Count > 0);
}
我试过了,但是当我点击列表视图外的按钮,即使它带走了选择它不执行。 – mowwwalker 2011-12-27 08:13:33
@Walkerneo:项目仍被选中,但选择不再显示。如果您希望显示选择内容,即使控件尚未获得焦点,也可以在构造函数中添加以下行:'listView1.HideSelection = false;'。 – Fischermaen 2011-12-27 08:15:44
太棒了,谢谢。现在有什么办法摆脱那恼人的虚线边框?最后一个选择的项目,即使它没有被选中了。 – mowwwalker 2011-12-27 08:26:46
我只是测试一些代码要做到这一点:
private void Form1_Load(object sender, EventArgs e)
{
//Added some dummy items
for(int i=0; i<10; i++)
listView1.Items.Add("Item"+i.ToString());
//Disable the button
button1.Enabled = false;
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
button1.Enabled = (listView1.SelectedItems.Count > 0);
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Remove(listView1.SelectedItems[0]);
}
而这是工作得很好。
如果你有一些问题,你可以请在这里发表您的代码。
的WinForms,WPF,MVC或Web表单? – ivowiblo 2011-12-27 08:00:27
更新我觉得标签,但WinForms的 – mowwwalker 2011-12-27 08:01:39
何时改变的项目? – ivowiblo 2011-12-27 08:05:40