日期:2014-05-16  浏览次数:20872 次

C# A窗口里显示B窗口
 我在A窗口里面ShowDialog()的方式显示B窗口,然后按OK Button 后 我想检查 B窗口输入的正确才继续执行关闭窗口,但是我检查输入有问题时直接Return ,但是 B窗口还是消失了(Task.ShowDialog()= DialogResult.OK),导致我会继续往下执行。

            Form Task = new groupInsertForm();
            if (Task.ShowDialog() == DialogResult.OK)
            {

            }

我想到有2个解决的方法但是好像都不大好:
1.  在B窗口设置一个假的确定按钮,点击后判断输入是否正确, 如果正确发送 OK Button 被点击的命令,不正确直接返回就是了。
2.  通过设置全局变量判定是否输入错误,如果输入错误再次调用Task.ShowDialog()。

请大家告诉我一些比较靠谱的方式,我感觉说的比较乱,不知道说清楚没有 
------解决方案--------------------
在formclosing事件判断检查输入,如果有问题就e.cancel=true;
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
请参考下面代码,这个代码实现的功能是如果账号密码输入不正确并且不取消登录的话则会一直提示输入用户名密码,只有输入正确之后才会进行下面的操作

这个相当于A窗体的按钮方法

var frm = new FrmLogin();
                var result = DialogResult.Cancel;

                do
                {
                    frm.Focus();
                    result = frm.ShowDialog();

                    if (result == DialogResult.Cancel)
                    {
                        Application.Exit();
                        return;
                    }
                }
                while (result != DialogResult.Yes);
                Application.Run(new FrmMain());


下面是登录窗体相当于B

try
            {
                Common.HttpHelper.HomePage(Common.CurrentUser.Cookie);
                var result = Common.HttpHelper.Login(Common.CurrentUser.Cookie, this.txtUserName.Text.Trim(), this.txtPassword.Text.Trim());
                if (result.IndexOf(Properties.Resources.LoginSuccess) > 0)
&