【问题标题】:Accessing Private method of other form [duplicate]访问其他形式的私有方法[重复]
【发布时间】:2016-06-17 19:13:32
【问题描述】:

如何从一种形式访问私有方法到另一种形式?

例如我在 Form1 中有这个方法:

表格1:

private void Test (){}

那么如何在Form2中访问该方法(private void Test),以便我在Form2中输入的值将在方法Test中发送??

测试是一个datagridview,在表格2中我必须输入带有相应值的名称,如果我按下保存按钮,它应该会自动保存在Form1中的datagridview中。

【问题讨论】:

  • 所以应该是public void Test() {}??那Form2中的代码应该是什么??
  • 不,你不能访问private该类之外的东西
  • 首先:起个好名字。如果你用Form1Form2 继续你的程序,你以后会遇到一个大问题,当你有一段时间没有接触你的代码时。
  • @James,你可以使用反射来访问私有方法
  • 链接的stackoverflow.com/questions/135443/…(重复)显示了如何完全按照您的要求进行操作。请注意,在大多数情况下,每个具体案例都有更好的方法 - 不幸的是,由于您没有提供它是私有的原因和您的最终目标,因此无法提出建议。

标签: c# winforms access-modifiers


【解决方案1】:

private 方法不应该在其class 之外访问。如果您不在class 中,您无法访问private 方法。

对于您的情况,最简单的方法是使用 private 方法 public

public void Test (){}

或者,您必须创建一个 public 包装器方法来调用您的 private 方法:

public void TestWrapper() {
    Test(); //if test is private
}

然后在您的Form2 中,您应该拥有Form1instance 并像这样轻松调用该方法:

//All these are inside Form2
Form1 form1 = new Form1();

//Somewhere in your code
form1.Test(); //if test is public, or
form1.TestWrapper(); //if test is private

但在所有情况下,底线是:

您不能在class 之外调用private 方法。

【讨论】:

  • 你可以使用反射来调用私有方法
  • @Anand 啊是的......这也是一个“包装器”可以这么说......
【解决方案2】:

如果你想访问其他表单的方法,那么它不能是private。您需要将它们设为public 才能访问其他表单的方法。

【讨论】:

    【解决方案3】:

    你不能从另一个类访问私有方法。 将其公开,然后您可以通过另一个类访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2012-02-18
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      相关资源
      最近更新 更多