我知道能够返回dialogresult,但是由于某种原因,我还需要返回一个ID号,可以在使用对话框的时候返回这种值吗?请问如何返回?

解决方案 »

  1.   

    不知道如果用你思考的这个方式返回,但是你可以用一个字段来记录你要返回的ID号,然后通过dialog的实例来读取这个值也许更好,或者你在初始化这个dialog的时候,代入一个参数,如果返回dialogResult.OK,那么这个代入的参数赋于相应的值, 不就可以实现么?
      

  2.   

    不知道这个ShowDialog()方法是否可以被Override呢? 
      

  3.   

    可以
    定义一个全局公共量,作为你要判断的变量。
    在定义一个方法 重新包装 showdialog方法,在方法里修改变量,并返回变量。
    我用过。
      

  4.   

    谢谢大家,但小弟还有一点不明白,就是顺序问题。因为这个值还是需要在窗体中做一定的处理,只有在最后的时候才能得到。我设想的是点击按钮进入窗体,同时锁定原来的窗体,showdialog可以完成这个任务,但是使用属性的话,我怎么得到这个值?怎么锁定原来的窗体呢?1楼的方法,其实我没弄懂。能不能再详细一点?我的目的是:点击按钮,锁定原窗体,打开新窗体,在新窗体中选择数据,同时进行处理,处理后返回这个值,在原来的窗体中进行再处理。或者不用showdialog有没有其它方法呢?
      

  5.   

    在对话窗上写一个Public属性,或者把你需要使用的控件设置为Public即可在对话窗关闭以后,只要没有超出该对话窗生存期的作用域,都可以直接获取例如窗口A是你的对话窗,你做了一个Public 的文本框叫做t1你一般会这样写var result== A.ShowDialog();
    if(result == DialogResult.Ok)
    {
      //确认按钮
      
      //取值
      string 你要的结果 = A.t1;
       
    }
    else
    {
     //取消按钮
    }
      

  6.   

    form2中:public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            public int a = 0;//初始值
            private void Form2_Load(object sender, EventArgs e)
            {        }
            public int myshow()
            {
                this.ShowDialog();            return a;
            }        private void button1_Click(object sender, EventArgs e)
            {
                a++;
            }
        }
    form1中: private void button1_Click(object sender, EventArgs e)
            {            Form2 f2 = new Form2();
              int a=  f2.myshow();//可以直接返回,也可以直接取f2.a 来判断。

      

  7.   

    在打开的对象增加一个:
    public int ID;
    ShowDialog()之后读取这个ID了就是了
      

  8.   


    Form1的代码using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace TestWindowsCommication
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            //字符串ID
            public string id = string.Empty;        /// <summary>
            /// 打开Form2的按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button_OpenForm2(object sender, EventArgs e)
            {
                //初始化Form2
                Form2 frm = new Form2();
                //显示Form2
                frm.ShowDialog();
                //获得Form2的id(Form2的ID要设置为public)
                id = frm.id;            
            }        /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button_ShowID(object sender, EventArgs e)
            {
                //消息显示ID
                MessageBox.Show(id, "ID", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }
    }
    Form2的代码using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace TestWindowsCommication
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }        public string id = string.Empty;
            /// <summary>
            /// 退出按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button_Exit(object sender, EventArgs e)
            {
                id = "test";
                this.Close();
            }
        }
    }测试可行 
      

  9.   

    谢谢兄弟们,弄出来了。方法是在对话框窗体中设置public的变量,GradeInterposeForm tmp = new GradeInterposeForm();
                DialogResult dlr = tmp.ShowDialog();
                if (dlr == DialogResult.OK)
                {
                    teachtaskid = tmp.teachtaskid;
                }
    很奇怪,这里竟然可以得到这个值,我以为既然返回了DialogResult,这个窗体的生命就结束了,应该无法得到的,但现在竟然得到了,奇怪地很,请问窗体的周期?给分了。
      

  10.   

    ShowDialog()打开的窗体 执行Close方法 ,其资源是不会被释放的。
    Show()方法打开的窗体,执行Close方法,他的生命期才会结束。你可以加两个按钮
    一个ShowDialog()一个Show()
    测试一下。