none
Winform窗体内传参 RRS feed

  • 问题

  • 这个是Form2的

            private void okButton_Click(object sender, EventArgs e)
            {
                Form1 fm=new Form1();
                fm.Show();
                this.Visible = false;
            }

    program.cs

     

     static void Main(string[] args)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                if (args.Length != 0)
                {
                Application.Run(new Form1(args));
                }
            }

    Form1

    string[] args;
            public Form1(string[] args)
            {
                InitializeComponent();
                this.args = args;
            }
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                if (args[0] == "")
                {
                    Close();
                }

            }

    2010年8月22日 10:33

答案

全部回复

  • 你好!

    你遇到了什么问题?

    另外需求对 args 进行判断,若 args 为 null , FormLoad 事件中的判断代码会报错。


    知识改变命运,奋斗成就人生!
    2010年8月22日 10:49
    版主
  • okButton 按下后就报错. 请问怎么传一个参数给Form1.或者有什么更好的办法.
    2010年8月22日 11:00
  • if (args[0] == "")

    改为

    if (args == null || args.Length == 0 || args[0] == "")


    知识改变命运,奋斗成就人生!
    2010年8月22日 11:04
    版主
  • 窗体之间参数的传递大概有下面几种方式

    1 即你目前的方式,构造函数传参

    2 窗体也是类,直接窗体公开的属性或方法,达到传参的目的。

    3 通过事件的方式。

    另外你的逻辑也有问题,最好改为下面的方式

    private void okButton_Click(object sender, EventArgs e)
    {
      string[] args = 你的参数值
      if (args != null && args.Length > 0 && args[0] != string.Empty)
      {
        Form1 fm = new Form1(args);
        fm.Show();
        this.Visible = false;
      }
    }
    


    知识改变命运,奋斗成就人生!
    • 已建议为答案 mazhou 2010年8月23日 9:57
    2010年8月22日 11:22
    版主