将修饰符从公共更改为内部。.Net 故意使用私有修饰符而不是公共修饰符,以防止任何非法访问您的项目之外的方法/属性/控件。事实上,公共修饰符可以在任何地方访问,所以它们真的很危险。您项目中的任何主体都可以访问您的方法/属性。但是在内部修饰符中,没有任何主体(您当前项目的其他主体)可以访问您的方法/属性。
假设您正在创建一个项目,其中包含一些秘密字段。因此,如果可以从您的项目中访问这些字段,则可能很危险,并且与您最初的想法背道而驰。作为一个很好的建议,我可以说总是使用内部修饰符而不是公共修饰符。
但是有些奇怪!
我还必须在 VB.Net 中说明,虽然我们的方法/属性仍然是私有的,但可以通过将表单作为变量调用而从其他表单/类访问它,没有任何问题。
我不知道为什么这种编程语言的行为与 C# 不同。正如我们所知,两者都使用相同的平台,并且声称它们几乎是相同的后端平台,但正如您所见,它们的行为仍然不同。
但我已经用两种方法解决了这个问题。任何一个; 通过使用接口(这不是推荐的,如你所知,接口通常需要公共修饰符,并且不推荐使用公共修饰符(正如我在上面告诉你的那样)),
或者
在某个静态类和静态变量中声明您的整个表单,并且仍然有内部修饰符。然后,当您想使用该表单向用户显示时,请将新Form()
构造传递给该静态类/变量。现在它可以随心所欲地在任何地方访问。但是你还需要更多的东西。您也可以在 Designer File of Form 中声明元素内部修饰符。当您的表单打开时,它可以在任何地方访问。它可以很好地为您工作。
考虑这个例子。
假设您要访问表单的 TextBox。
所以第一项工作是在静态类中声明一个静态变量(静态的原因是易于访问,而无需在未来使用任何新的密钥)。
其次转到该表单的设计器类,该类应该由其他表单访问。将其 TextBox 修饰符声明从私有更改为内部。不用担心; .Net 在您更改后永远不会再将其更改为私有修饰符。
第三,当您想调用该表单打开时,请将新的表单构造传递给该静态变量-->>静态类。
第四; 在 From 打开时,您可以从任何其他表单(项目中的任何位置)访问该表单/控件。
看下面的代码(我们有三个对象。1-一个静态类(在我们的例子中我们命名它A
)
2 - 任何其他想要打开最终表单的表单(在我们的示例中具有 TextBox FormB
)。
3 - 我们需要打开的真实表单,我们假设可以访问它的内部TextBox1
(在我们的示例中FormC
)。
看看下面的代码:
internal static class A
{
internal static FormC FrmC;
}
FormB ...
{
'(...)
A.FrmC = new FormC();
'(...)
}
FormC (Designer File) . . .
{
internal System.Windows.Forms.TextBox TextBox1;
}
您可以随时随地访问该静态变量(此处FormC
)及其内部控制(此处Textbox1
),而 whileFormC
是开放的。
任何评论/想法让我知道。我很高兴收到您或其他任何人关于这个话题的更多信息。老实说,过去我对这个提到的问题有一些问题。最好的方法是第二种解决方案,我希望它对你有用。让我知道任何新的想法/建议。