【问题标题】:How to access a control in one window form from other form如何从另一个窗体访问一个窗体窗体中的控件
【发布时间】:2011-02-26 05:19:44
【问题描述】:

先生,我有两个窗体,每个窗体都有一些控件。我想从另一个表单访问一个表单的控制权。我尝试了两种方法- 1-公开控制并访问它们。 2-根据要求对公共属性进行获取和设置控制。 但在这两种情况下,我都必须创建第一种形式的对象才能访问属性或公共控件。我已经实例化了一个套接字对象并将其绑定到第一种形式的构造函数中的本地端点。现在,如果我创建另一个第一种形式的对象以访问控件,则再次触发构造函数并执行相同的套接字绑定代码,从而导致异常。请建议我该怎么做??? 谢谢sssss....

【问题讨论】:

  • 我不知道你在说什么。是的,您必须先创建/实例化控件,才能使用它们——您期待什么?您在问题中描述的任何一种方法都可以让您实现您想要的。除非您向我们展示它是什么,否则我们无法告诉您您的代码有什么问题。

标签: c# winforms


【解决方案1】:

您可以通过多种方式做到这一点...

您可以声明一些静态 getter/setter 来管理组件的静态实例:

private static Type _myObject;
public static Type MyObject
{
   get
   {
      return _myObject;
   }
}

在这种情况下,如果您只需要特定的共享对象,您可以从 evrywere 访问它

MyClass.MyObject.Function();

或者你可以为整个类定义一个getter:

public class MyClass
{
   static MyClass _myClass;
   public static MyClass Instance { get { return _myClass; } }

   public MyClass()
   {
      _myClass = this;
      ...
   }

   public void Hello()
   {
      Console.WriteLine("CIAO!")
   }
} 

并获取类的所有方法和属性:

MyClass.Instance.Hello();

您也可以在构造函数、属性或函数中传递类,但我不喜欢这种方式...

【讨论】:

  • 如果我在 Program.CS 文件中将第一种形式的对象(它是应用程序的主要形式)声明为静态并使用 program.cs 文件中的属性返回该实例化对象怎么办。由于在 program.cs 中创建主表单对象以传递 Application.Run(new form());
  • 我认为这不是最好的方法...更好的是用第二个示例这样的单个实例编写一个独立的类,然后从中访问您需要的所有内容...
猜你喜欢
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多