检测用户何时尝试使用“确定”或“取消”关闭表单?

时间:2017-04-06 14:44:28

标签: c#

这听起来应该有一个简单的解决方案,但我无法解决。

我有一个c#表单和一个FormClosing事件处理程序:

private void DrawBorderForm_FormClosing(object sender, FormClosingEventArgs e)
{
    _dCornerRadius = 0.0;
    bool bIsDouble = false;

    try
    {
        bIsDouble = Double.TryParse(textBoxRadius.Text, out _dCornerRadius);
    }
    catch
    {
        bIsDouble = false;
    }

    if (!bIsDouble || _dCornerRadius < 0.0 || _dCornerRadius > 100.0)
    {
        MessageBox.Show("Please input a radius value of 0 to 100!");
        e.Cancel = true;

        return;
    }
}

如果值不是确定,它会验证某些文本值并禁止关闭表单。

问题是此处理程序正在针对确定取消以及关闭进行解雇。我不需要验证他们是取消还是关闭。只要他们点击确定,因此想要关闭表单。

2 个答案:

答案 0 :(得分:2)

你可以分析this.DialogResult,这已经在表单结束事件被触发时设置了

答案 1 :(得分:0)

我发现这个问题可以解答它:

Preventing a dialog from closing in the button's click event handler

private void btnOK_Click(object sender, EventArgs e)
{
    _dCornerRadius = 0.0;
    bool bIsDouble = false;

    bIsDouble = Double.TryParse(textBoxRadius.Text, out _dCornerRadius);

    if (!bIsDouble || _dCornerRadius < 0.0 || _dCornerRadius > 100.0)
    {
        MessageBox.Show("Please input a radius value of 0 to 100!");
        this.DialogResult = DialogResult.None;
    }
}