我正在尝试将外部类中的信息返回到主窗体中的文本框。但是,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");
}
}
}
答案 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();
}
}