C#从另一个类访问表单对象

时间:2013-05-27 07:50:32

标签: c# monodevelop gtk#

我正在尝试将外部类中的信息返回到主窗体中的文本框。但是,monodevelop不会让我更改自动表单创建代码,因此文本框可以是公共的,并且可以轻松访问。当我调试时,我所做的任何更改都会被覆盖。

所以,我试图通过引用参数将文本框传递给子类,然后在那里更改值。没用。

最后,我尝试使用一个监听器来触发表单中的函数来改变值,但仍然没有运气。参考:Stack Overflow Page

由于我具有这种结构的方式,所有路线都会导致无限循环或失败。有人可以建议一个解决方案,并解释为什么这种情况不断变成无限循环?谢谢

public class MainClass
{
    //Get Information to here
    //textbox
    public static void Main()
    {
        ParentClass Parent = new ParentClass ();
    }
    public void print1 (string Test)
    {
        Console.WriteLine(Test);
    }
}
public class ParentClass : MainClass
{
    public ParentClass()
    {
        ChildClass child = new ChildClass ();
    }

    public void print2(string Test)
    {
        base.print1 (Test);
    }
}

public class ChildClass : ParentClass
{
    public ChildClass()
    {
        // Some code
    }

    public void print3(string Test)
    {
        base.print2(Test);
    }

    class Socket : ChildClass
    {
        //Asynchronous Socket
        public Socket()
        {
            //Start Listening
        }

        //Listener running, target function:
        void ListenerTargetFunction()
        {
            base.print3 ("Test");
        }
    }
}

2 个答案:

答案 0 :(得分:0)

尝试手动修改Form.Designer.cs

在:

  private void InitializeComponent()
  {

  }

只需更改控制声明:

private System.Windows.Forms.Textbox YourTextbox;

为:

public System.Windows.Forms.Textbox YourTextbox;

答案 1 :(得分:0)

幸运的是,我在盒子外面想了一下,并尝试将每个对象传递到它的子对象中,相反,我原来搞砸了构建层次结构的方法与底层的内容相反。离墙或直观,你是判断:

class Program
{
    public static void Main()
    {
        Console.WriteLine("Main");
        Console.ReadLine();
        Form oForm = new Form();
    }
}

public class Form
{
    public Parent oParent;
    public Form()
    {
        Console.WriteLine("Form");
        Console.ReadLine();
        Parent oParent = new Parent(this);
    }

    public void TargetFunction()
    {
        Console.WriteLine("Target Hit");
        Console.ReadLine();
    }
}

public class Parent
{
    Form oForm;
    Child oChild;
    public int hi = 1;
    public Parent(Form Form)
    {
        oForm = Form;
        Console.WriteLine("Parent");
        Console.ReadLine();
        oChild = new Child(oForm, this);
    }
}

public class Child
{
    Form oForm;
    Parent oParent;
    public Child(Form Form, Parent Parent)
    {
        Console.WriteLine("Child");
        Console.ReadLine();
        oForm = Form;
        oParent = Parent;

        oForm.TargetFunction();
    }
}