• 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;
    }

     

  • 相关阅读:
    js中cookie的操作
    javascript HTML静态页面传值的四种方法
    更改ligerui源码实现分页样式修改
    javascript Date format(js日期格式化)
    LigerUI用PostGetAjax前后台交互方式的写法
    html中 accept 属性
    jQuery.ajax() 设置 Headers 中的 Accept 内容
    C# 事件(Event)
    C# 委托(Delegate)
    C# 反射(Reflection)
  • 原文地址:https://www.cnblogs.com/zengwei/p/645822.html
Copyright © 2020-2023  润新知