c#windows应用程序窗体间传值
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;
}