c#如何在表单中使用变量

时间:2015-09-09 11:52:43

标签: c#

要求:从form1中捕获用户ID,并将其用于其他表单。

结构:

  • Form1 - 登录表单(用户输入登录ID和密码)
  • 表格2 - 选择表格(用户从这里选择其他表格 希望)
  • Form3,4 ... - 是数据输入表单,然后导入该条目 完成后按数据库并按保存。

Form1代码:

namespace xxxxx
{
    public partial class Form1 : Form

      {

       //Establish Conection

        public Form1()
        {
            InitializeComponent();
            MaximizeBox = false;
        }



private void btn_Login_Click(object sender, EventArgs e)
        {


            //Opening Connection - checking User input match with DB
            // Once matched open Form2

                string userName = txt_Username.Text;
                Form2 f2 = new Form2();
                f2.ShowMe = userName;
                f2.Show();
                this.Hide();
           //closing Connection

        }

Form2代码:

namespace xxxxx
{
    public partial class Form2 : Form
    {
       public string ShowMe { get; set; }

       public Form2()
        {
            InitializeComponent();
            MaximizeBox = false;

        }

 private void Form2_Load(object sender, EventArgs e)
        {

            passName.Text = ShowMe;
        }

它可以正常工作,因为它获取用户ID并显示在form2标签中。但是,当我为Form3做同样的事情时,它不起作用。

FORM2代码继续:

 private void button1_Click(object sender, EventArgs e)
        {
            string myVal = passName.Text;
            Form3 f3 = new Form3();
            f3.ShowMe = myVal;
            f3.Show();
            this.Hide();
        }

FORM3代码:

namespace xxxxxxx
{
    public partial class Form3 : Form
    {
        public string ShowMe { get; set; }


        public Form3()
        {
            InitializeComponent();
            MaximizeBox = false;

        }

        private void Form3_Load(object sender, EventArgs e)
        {
            UName.Text = ShowMe;
        }

我不确定为什么它没有在表单3标签上显示用户ID,因为我对FORM 2使用了相同的方法。

任何帮助都将非常感激。 -Viku

3 个答案:

答案 0 :(得分:4)

最简单的解决方案是在Dictionary类中定义public static对象。它可以从各种形式访问。

答案 1 :(得分:0)

在表单1调用表单2上,您正在设置" ShowMe"价值

string userName = txt_Username.Text;

在表单1上调用表单3,您正在设置" ShowMe"价值

string myVal = passName.Text;
那是打算?或者你的意思是还有表格3使用" txt_Username.Text"值。

此外,通过在表单中​​使用公共字符串,您可以在可能发生意外的情况下从任何位置设置该值。您可以考虑向其他表单添加一个参数与公共,并传递您想要显示的字符串。有点像...

public Form2(string showMeFromFirstForm )
{
   InitializeComponent();
   MaximizeBox = false;
   passName.Text = showMeFromFirstForm;
}

并在您的第一个表单按钮中,您可以简化为

private void btn_Login_Click(object sender, EventArgs e)
{
   Form2 f2 = new Form2( txt_Username.Text );
   f2.Show();
   this.Hide();
}

答案 2 :(得分:0)

试试这个。您可以使用static关键字声明变量,这意味着只有一个静态成员的副本。

您可以在 Form1 类或其他单独的类中进行delcare。 例如,您在另一个名为ConstValue单独的类中将其作为

  

公共静态字符串ShowMe {get; set;}

因此,直接设置username(在您的上下文中)的值,而不是从 Form1

创建类的实例
  

ConstValue.ShowMe = txt_Username.Text;

为了获得价值;我们假设您在 Form4 中有label1 控件。因此,在 Form4 编码中执行以下操作:

  

label.Text = ConstValue.ShowMe;

希望你明白并且它很容易帮助。