none
如何得到一个非模态对话框的返回值 RRS feed

  • 问题

  • 通常使用Show()来显示一个非模态对话框,但是如果需要得到它的返回值该怎么弄呢?dlg.DialogResult == DialogResult.OK 已经无法触发了
    2011年7月27日 6:13

答案

  • 看这个是否满足你的要求

     public partial class Form16 : Form
      {
        public Form16()
        {
          InitializeComponent();
        }
    
        //将textBox1设为public
        private void button1_Click(object sender, EventArgs e)
        {
          Form17 f17 = new Form17(this);
          f17.Show();
        }
    
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
          if (textBox1.Text=="ok")
          {
            this.Text = "ok";
          }
    
          if (textBox1.Text=="cancl")
          {
            this.Text = "cancl";
          }
        }
      }
    

     

     public partial class Form17 : Form
      {
        public Form17()
        {
          InitializeComponent();
        }
    
        public Form16 f16;
        public Form17(Form16 form)
        {
          InitializeComponent();
          f16 = form;
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
          f16.textBox1.Text = "ok";
         
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
          f16.textBox1.Text = "cancl";
        }
    
      }
    

     


    http://blog.csdn.net/zx13525079024
    • 已标记为答案 scate233 2011年8月4日 1:35
    2011年7月27日 10:12

全部回复

  • 使用SHOW()没有返回值,请问楼主具体想实现什么样的效果
    http://blog.csdn.net/zx13525079024
    2011年7月27日 6:19
  • 那个窗口是用来给用户操作数据的,他需要看着另一个窗口来进行操作,因为比较大,所以做成了非模态让他能切换察看,但是需要根据他最后确认的情况来对它的父窗口进行何种后续的判定

    2011年7月27日 7:42
  • 看这个是否满足你的要求

     public partial class Form16 : Form
      {
        public Form16()
        {
          InitializeComponent();
        }
    
        //将textBox1设为public
        private void button1_Click(object sender, EventArgs e)
        {
          Form17 f17 = new Form17(this);
          f17.Show();
        }
    
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
          if (textBox1.Text=="ok")
          {
            this.Text = "ok";
          }
    
          if (textBox1.Text=="cancl")
          {
            this.Text = "cancl";
          }
        }
      }
    

     

     public partial class Form17 : Form
      {
        public Form17()
        {
          InitializeComponent();
        }
    
        public Form16 f16;
        public Form17(Form16 form)
        {
          InitializeComponent();
          f16 = form;
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
          f16.textBox1.Text = "ok";
         
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
          f16.textBox1.Text = "cancl";
        }
    
      }
    

     


    http://blog.csdn.net/zx13525079024
    • 已标记为答案 scate233 2011年8月4日 1:35
    2011年7月27日 10:12
  • 你可以在该窗体中定义一个公有变量来作为其结果
    2011年8月1日 14:29
  • 看这个是否满足你的要求

     public partial class Form16 : Form
    
     {
    
      public Form16()
    
      {
    
       InitializeComponent();
    
      }
    
    
    
      //将textBox1设为public
    
      private void button1_Click(object sender, EventArgs e)
    
      {
    
       Form17 f17 = new Form17(this);
    
       f17.Show();
    
      }
    
    
    
      private void textBox1_TextChanged(object sender, EventArgs e)
    
      {
    
       if (textBox1.Text=="ok")
    
       {
    
        this.Text = "ok";
    
       }
    
    
    
       if (textBox1.Text=="cancl")
    
       {
    
        this.Text = "cancl";
    
       }
    
      }
    
     }
    
    

     

     public partial class Form17 : Form
    
     {
    
      public Form17()
    
      {
    
       InitializeComponent();
    
      }
    
    
    
      public Form16 f16;
    
      public Form17(Form16 form)
    
      {
    
       InitializeComponent();
    
       f16 = form;
    
      }
    
    
    
      private void button1_Click(object sender, EventArgs e)
    
      {
    
       f16.textBox1.Text = "ok";
    
       
    
      }
    
    
    
      private void button2_Click(object sender, EventArgs e)
    
      {
    
       f16.textBox1.Text = "cancl";
    
      }
    
    
    
     }
    
    

     


    http://blog.csdn.net/zx13525079024

    哪个form17的button1事件是它自己的还是form16的?
    2011年8月2日 1:28
  • 在form17类里面的是form17的,在form16里是16的。


    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月2日 1:39
  • dear

    1.Form.Show方法没有返回值,请参考MSDN:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.show%28VS.80%29.aspx

    2.看起来你的需求很象是要用强制回应模式试着用Form.ShowDialog方法调用视窗显示


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月2日 2:42
  • 自己写一个对话框,挺简单的。。不要用系统默认的。。然后你想在上面干什么都行。。


    学习学习....
    2011年8月2日 8:07