【问题标题】:storing data in another form protection issues以另一种形式存储数据保护问题
【发布时间】:2019-05-05 22:17:35
【问题描述】:

我正在尝试将一个表单中的字符串存储到另一个表单上的标签。但是,这样做时,它表示由于其保护级别而无法完成。有想法该怎么解决这个吗?

 maskedTxtLogin.Text = FormInvisible.lblInitials.Text();

【问题讨论】:

  • 为此目的创建自定义事件

标签: c# .net winforms access-modifiers protection


【解决方案1】:

控件在表单设计器中生成为 private 字段:

private System.Windows.Forms.Label lblInitials;

如果您想在表单之外访问它们,您需要为它们创建一个property。要查看上述声明并为此编写一个属性,只需右键单击代码中的lblInitials,然后单击类中的Go to Declaration(或Definition)您被导航到编写以下代码:

public Label LblInitials
{
    get { return lblInitials; }
    set { lblInitials= value; }
}

您还需要创建表单的新实例来访问此属性:

FormInvisible fr = new FormInvisible();
maskedTxtLogin.Text = fr.LblInitials.Text;

【讨论】:

【解决方案2】:

这是更改保护级别的另一种方法

打开FormInvisible.Designer.cs

寻找private System.Windows.Forms.Label lblInitials;

将访问修饰符从private修改为public

或者你可以打开控件的属性,将Modifiersprivate改为public

【讨论】:

  • 字段的保护从private更改为public确实被认为是一种不好的做法。永远不要这样做,并尝试始终使用 properties
  • @S.Akbari 当然,这绝对是真的,你的解决方案更好。这个解决方案只是为了提供另一种解决问题的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 2014-02-11
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
相关资源
最近更新 更多