请教:如何多个窗口之间传递参数

主  题:  请教:如何多个窗口之间传递参数?
作  者:  uscool (小小风)
等  级:  ^
信 誉 值:  100
所属论坛:  .NET技术 C#
问题点数:  50
回复次数:  11
发表时间:  2003-12-05 08:28:04

如:

private void main_Load(object sender, System.EventArgs e)
{
    Window.welcome welcome=new Window.welcome();
    welcome.Location=new Point();
    welcome.ShowInTaskbar=false;
    welcome.ShowDialog();
    this.WindowState = FormWindowState.Maximized;
    this.ShowInTaskbar = true;
}

我想得到welcome窗体运行后返回的结果来判断是否登陆该怎么做?还有如果有多个数据传送又该怎么传送数据?谢谢!我是新手,最好能给个例子!非常感谢!



回复人: mableboy() ( 一级(初级)) 信誉:100 2003-12-05 08:44:00 得分:0

你可以定义 public static 类型的变量!

回复人: KentYu(恳鱼) ( 二级(初级)) 信誉:100 2003-12-05 08:45:00 得分:0

http://expert.csdn.net/Expert/topic/2506/2506557.xml?temp=.4740564
http://expert.csdn.net/Expert/topic/2493/2493260.xml?temp=.9665644
都可以实现:)

回复人: JoeM(Tao) ( 三级(初级)) 信誉:100 2003-12-05 08:46:00 得分:0

在多个窗口定义internalpublic借口
eg:
Form2中定义

internal string getResult()
{
    return 123456; // the value that you want to return.
}//方法.

在Form1中 Form2 frm2 = new Form2();
frm2.ShowDialog();
int retVal = frm2.getResult();

回复人: KentYu(恳鱼) ( 二级(初级)) 信誉:100 2003-12-05 08:47:00 得分:0

mableboy() 说的不错,定义public static类型的变量,不需要form的实例。

回复人: saucer(思归) ( 五星(高级)) 信誉:335 2003-12-05 08:49:00 得分:0

expose some property from welcome form, say Login and Password

class welcome : Form
{
   public string Login
   {
     get {...}
     set { ...}
   }

   public string Password
   {
     get {...}
     set { ...}
   }
}

private void main_Load(object sender, System.EventArgs e)
{
    Window.welcome welcome=new Window.welcome();
    welcome.Location=new Point();
    welcome.ShowInTaskbar=false;

    if (DialogResult.OK == welcome.ShowDialog())
    {
        string sLogin = welcome.Login;
        string sPassword = welcome.Password;
        //do you login here
        this.WindowState = FormWindowState.Maximized;
        this.ShowInTaskbar = true;
    }
}

回复人: mableboy() ( 一级(初级)) 信誉:100 2003-12-05 08:49:00 得分:0

你在welcome对话框中的button的DialogResult属性中可以选择他被按下后的返回值的,比如返回"OK".
然后在你调用他的函数中这么写

if( welcome.ShowDialog()==DialogResult.OK)
{
}

回复人: uscool(小小风) ( 一级(初级)) 信誉:100 2003-12-05 09:29:00 得分:0

非常感谢!但是定义public static类型的变量该怎么定义阿?我在main主窗体定义后,在welcome窗体里不能调用(也是)!如何来作?谢谢!

回复人: zhengguoc(爱之海洋) ( 二级(初级)) 信誉:100 2003-12-05 09:47:00 得分:0

上面方法有点小题大作
这样:
Window.welcome welcome=new Window.welcome();
中加入参数变为
Window.welcome welcome=new Window.welcome(ref string val);

Window.welcome welcome=new Window.welcome(out string val);
在welcom类的构造函数中,接入这个参数,退出welcom类时改变
val为相应的值。
之后你就收到从welcom传递来的参数值了就是val

回复人: yqydaful(无边落木) ( 一级(初级)) 信誉:100 2003-12-05 10:02:00 得分:0

  1. 要定义public static类型的变量,可以先创建一个静态的类,再在这个类中定义一些公共的变量,以备在不同的窗体中使用。
  2. 第二个方法 是在窗口中定义一些公共属性或方法,用于传递参数据用
  3. 第三个方法 同楼上差不多,是在窗体的构造函数中定义一些参数

回复人: zhengguoc(爱之海洋) ( 二级(初级)) 信誉:100 2003-12-05 10:06:00 得分:0

最好不要用全局变量,静态变量,这样容易产生逻辑混乱,聚合性不好
也不易读。
最好用我说的方法,也就是楼上的第三种方法。

回复人: qiaobaba(一路坎杀) ( 三级(初级)) 信誉:100 2003-12-05 10:08:00 得分:0

此类问题我已回过贴

最简单的方法你可以设welcome.tag属性,在welcome.ShowDialog();后检查,其它方法见:
http://expert.csdn.net/Expert/topic/2491/2491396.xml?temp=.1861994

Contributors: FHL