目前我已经设置了一个自定义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()是您必须实现的方法,它验证对话框中的输入字段。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top