【发布时间】:2019-08-09 02:52:51
【问题描述】:
虽然我确信答案很简单,但我还没有找到一种搜索友好的方式来问这个问题。如果列表框中没有选择任何内容(索引为-1),我想禁用一个按钮。除非您更改表单上的其他内容,否则使用 IndexChanged 事件有点工作。索引更改为 -1,但事件不会触发。当表单上的任何内容发生更改时是否会触发事件,然后我可以检查我的状态?
抱歉太简短了……我是用手机发帖的。
这是我认为应该起作用的方法。
private void SourceFolderListBox_SelectedIndexChanged(object sender, EventArgs e)
{
SetDeleteFolderButtonStatus();
}
private void SetDeleteFolderButtonStatus()
{
if (SourceFolderListBox.SelectedIndex == -1)
DeleteFromSourceButton.Enabled = false;
else DeleteFromSourceButton.Enabled = true;
}
private void SourceFolderListBox_Leave(object sender, EventArgs e)
{
SetDeleteFolderButtonStatus();
}
所以错误是如果我在表单上编辑不同的字段,SourceFolderListBox 中的选择会清除(索引更改为 -1)但按钮保持启用状态。
我的解决方法是每次更改时都致电SetDeleteFolderButtonStatus()。这对我来说感觉很草率,但我相对较新。
【问题讨论】:
-
也许还订阅
Leave或LostFocus事件以检测“您更改了表单上的其他内容”的时间? -
除非您更改表单上的其他内容。索引变为-1 → 可以分享一下minimal reproducible example吗?
-
您好,如果您能分享一下已经完成的工作,那就太好了
-
@Sweeper 我没有看到
LostFocus的活动,会不会和Leave一样? -
@RezaAghaei 感谢您的建议。我想我更好地理解你需要什么。我会写一个独立的程序,除了这个什么都不做,看看我得到了什么。