0

我正在尝试在名为 ConsoleText 的富文本框中附加文本。它工作得不是很好。我在我的表单中使用一个属性来访问类中的richtextbox。

它看起来像这样:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    //Skipped the rest
    public string ACText
    {
        set 
        {
            ConsoleText.AppendText(value); 
        }
    }

现在来自我班级的构造函数。

    public McDonalds(string email, string pass)
    {
        Form1 f = new Form1();
        f.ACText = "test";
    }

遗憾的是,它没有在我的richtextbox 中显示任何文本。我知道它有效,因为我可以在属性中使用 messageBox 并看到值被传递给它。

在此先感谢我真的需要帮助。

4

3 回答 3

2

调用Form1 f = new Form1();不会为您提供对现有表单的引用,它会在表单的控件中创建一个具有空白/默认值的新表单。

如何解决这个问题很大程度上取决于您的设计。如果您想将您的类绑定到该表单实现,我们的类需要对表单的引用、对控件的引用或您感兴趣的控件的值传递给它。

例如:

public McDonalds(string email, string pass, Form1 form)
{
    form.ACText = "test";
}

一个更干净的解决方案是从您的类中返回一个值McDonalds并让 FORM 适当地设置控件值,而不是将您的类绑定到该表单类。

于 2013-04-16T19:39:36.023 回答
2

你可以使用单例

单例使拥有单个实例变得容易。它们允许单一分配和数据实例。我们回顾了单例类型。我们看到了最快的实现之一。我们回顾了其他可能性。

public partial class Form1 : Form
{
    public static Form1 instance = null;

    public Form1()
    {
        instance = this; //add this class to singleton
        InitializeComponent();
    }


    public void Show(string Message)
    {
       MyConsole.Text = Message;
    }

另一个类:

        Form1.instance.Show("blah blah");
于 2017-03-05T03:52:50.303 回答
1

Form1在类绑定方法中创建委托ACText (string val),并将传递DelegateMcDonalds类。解雇代表

namespace YourNameSpace
{
    public delegate void RichTextBoxDelegate(string text);
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        public void ACText(string s)
        {
            ConsoleText.AppendText(s);
        }

        // In Some Method Call MCDonald's form
        public void ShowMcDonalds()
        {
            RichTextBoxDelegate deleg = new RichTextBoxDelegate(ACText);
            MCdonalds ob = new McDonalds(deleg);
            ob.show();

        }
    }
}

将代表传递给麦当劳表格

只是解雇代表

public McDonalds(RichTextBoxDelegate sp)
{
    Form1 f = new Form1();
    sp("This is Test");
}

deleg("Test value");    // form McDonald's Form
于 2013-04-16T19:48:34.693 回答