现在的位置: 首页 > 综合 > 正文

c#windows应用程序窗体间传值

2012年12月21日 ⁄ 综合 ⁄ 共 2636字 ⁄ 字号 评论关闭

Form1 f1 =new Form1();
f1.parameter["XXX"]="XXX";(字符串)
f1.show();

当在f1中使用这个值时这样接值
string s = type(me.parameter["XXX"],"string")
VB.NET的语法
我写的这几句可能有错误
但大意就是这样了
我后来看了一下这个DLL原来这个parameter是个hashtable

像他这种窗体间的传值的方法可以传个种类型的值

我的问题就是:这个父窗体应该怎么写,让继承他的窗体都能实现我说的这种方法来传值??

 

其实parameter只是Form1提供的一个属性,你自己也可以实现。例如:
public class clsParameters
{
    ArrayList arrParameters;
    public clsParameters()
    {
        arrParameters = new ArrayList();
     }
    public object this[int Index]
    {
        get{
             if( i >=0 && i < arrParameters.Count )
                return arrParameters[i];
             else
                throw new ApplicationException( "Invalid index" );
            }
         set{
             if( i >=0 && i < arrParameters.Count )
                arrParameters[i] = value;
             else
                throw new ApplicationException( "Invalid index" );
            }
    }
}

在你的Form1中,加入如下即可:
public clsParameters parameters = new clsParameters();

就可以用this.parameters[i]来访问了。

 


f1.parameter["XXX"]="XXX";

 

我自己想到了一种方法
FORM1向FORM2中传值
在FORM2中声明一个Hashtable
在FORM2的构造方法中实例化
在FORM1中写入值

FORM2中
public Hashtable parameter = null;
public void form2()
{
    parameter = new hashtable();
}
form1 中

form2 f2 = new form2();
f2.parameter.add("XXX", "XXX");
f2.show();

在FORM2中接值这样写
string s = this.parameter["XXX"].toString();
messagebox.show(s);

第二种方法:
第1步:在解决方案上添加一个窗体Form2;并添加textBox1、textBox2、Button1,将Button1的标题设为“确定”,DialogResult属性设为“OK”;
第2步:在窗体Form2的类代码中添加两个私有字段: _username、_password,并添加两个public属性:UserName、Password;代码如下:
public partial class Form2: Form
{
       private string _username;
       private string _password;
       public string UserName
       {
           get
           {
               return _username;
           }
           set
           {
               _username=value;
           }
       }
       public string Password
       {
           get
           {
               return _password;
           }
           set
           {
               _password=value;
           }
       }
       .....
}

第3步:窗体间相互传值演示
在Form1添加一个的Botton1、一个comboBox1,在Botton1_Click函数中如下代码:
private void button1_Click(object sender,EventArgs e)
{
      Form2 myForm2 = new Form2();
      myForm2.UserName="Richard";//Form1向Form2传值!!!
      myForm2.Password="pwd1234";
      DialogResult result= myForm2.ShowDialog();
      if(result==DialogResult.OK)
      {
           comboBox1.Items.Add(myForm2.UserName);////Form2向Form1传值!!!
           comboBox2.Items.Add(myForm2.Password);
       }
}
  要充分演示上述功能,还需要对Form2的代码作如下完善:
第1,在Form2_Load中添加如下代码:
private Form2_Load(object sender,EventArgs e)
{
    textBox1.Text=_username;
    textBox2.Text=_password;
}
第2,在textBox1、textBox2的textChanged事件中添加如下代码:
private void textBox1_TextChanged(object sender,EventArgs e)
{
    this.UserName=textBox1.Text;
}
private void textBox2_TextChanged(object sender,EventArgs e)
{
    this.Password=textBox2.Text;
}

 

抱歉!评论已关闭.