题
目前我已经设置了一个自定义ok取消对话框,其中包含c#中的下拉菜单。 ok和cancel按钮使用DialogResult属性,因此后面没有代码。我现在需要做的是验证下拉菜单,以便在回发对话结果之前检查它是否为空。
这可能吗?
解决方案
从此处
双击Closing字段,并按如下方式实现:
private void Second_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
// When the user attempts to close the form, don't close it...
e.Cancel = (dropdown.selecteditemindex >= 0);
}
其他提示
禁用“确定”按钮,直到组合框更改为有效值。
如果你想检查某些东西,你总是需要设计师背后的一些代码。 对于您的情况,您可以使用“结束”在表单中的事件,检查您需要的内容,如果需要,请设置“e.Cancel = true;”; - 然后表格不会被关闭。
我为此做的是不在OK按钮上设置DialogResult,而是在按钮后面添加一些代码。
private void OkButton_Clicked(object sender, EventArgs e)
{
this.DialogResult = ValueComboBox.SelectedIndex >= 0
? DialogResult.Ok
: DialogResult.None;
}
您可以继续使用对话框的“确定”和“取消”按钮功能,然后将此代码放入“确定”按钮的“单击”处理程序中:
private void OkButton_Clicked(object sender, EventArgs e)
{
if (!IsValid()) {
this.DialogResult = System.Windows.Forms.DialogResult.None;
}
}
在上面的代码中, IsValid()
是您必须实现的方法,它验证对话框中的输入字段。
不隶属于 StackOverflow