C#将form1变量中的数据发送到用户控件

时间:2018-01-07 14:36:53

标签: c# forms variables properties user-controls

我对C#和一般编程非常陌生。我已经找到了很多这个问题的答案,但没有一个是有意义的或者有效的。

我有一个数据库的名称,它被分配给一个变量 - 当表单关闭时,第二个表单带有导航栏用户控件加载,我需要将此变量分配给导航栏中的标签用户控件。 换句话说,我需要以不同的形式将表单中的变量发送到用户控件。

到目前为止,我尝试过的最好的事情是在用户控件中创建一个公共属性,然后在表单中设置它,我知道我在正确的轨道上,但我还没有做得很对。与创建实例有关但我不了解它是如何工作的。

//User Control
public string nameOfUser {get; set;}

//Form1
 if (dt.Rows.Count == 1)
 {
  object a = dt.Rows[0]["forename"];
  string forenameString = Convert.ToString(a);
  navBar.nameOfUser = forenameString;
  mainForm objfrmMain = new mainForm();
  this.Hide();

  objfrmMain.Show();
  }
  else
  {
   MessageBox.Show("Incorrect Login.");
  }

尝试设置属性时出错:

Error with trying to set the property (screenshot)

谢谢!

3 个答案:

答案 0 :(得分:0)

在主窗体上广告私有变量,命名用户名,然后重新加载新方法

Private String userName;
Public mainform(string name){
    This.userName= name;
    navBar.nameOfUser= this.userName;
}

然后使用

mainForm objfrmMain = new mainForm(forenameString);

答案 1 :(得分:0)

  1. 在主类中声明一个静态变量“forenameString”。

  2. 保存该变量forenameString

    中的所有值

    forenameString =dt.Rows[0]["forename"].ToString();

  3. 如果需要,请使用此变量。

    navBar.nameOfUser = forenameString;

答案 2 :(得分:0)

最后我刚刚创建了一个带有公共变量的单独类 - 可能效率不高但最终有效。谢谢您的帮助。