2013-04-16 38 views
0

我試圖在我的richtextbox中追加名爲ConsoleText的文本。這工作不太好。我在表單中使用屬性來訪問類中的richtextbox。從類中訪問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並查看該值是否傳遞給它。

在此先感謝我真的需要幫助。

+0

沒有ü在哪裏寫的麥當勞功能..所以意味着你正試圖從不同的班組長更新UI。正確。? –

+0

如果你試圖添加純文本到rtf,你可以簡單地使用.text ,如果你想設置一些rtf在使用.rtf –

+0

@AkshayJoy - >這是一個類的構造函數麥當勞 – Peter

回答

1

創建代表Form1類綁定方法ACText (string val),並將Delegate傳遞給McDonalds類。火代表

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(); 

     } 
    } 
} 

傳遞德勒麥當勞形式

剛剛火了Delagate

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

deleg("Test value"); // form McDonald's Form 
+0

我不是很擅長代表,我應該在麥當勞課上寫什麼?在我的表單中寫入所有行只是給我這個錯誤: 字段初始值設定項不能引用非staic字段,方法或屬性windowsformsapplication10.form1.actext(字符串) 無法真正看到我如何觸發委託。在此先感謝 – Peter

+0

非常感謝它的工作。 – Peter

2

調用Form1 f = new Form1();不給你一個現有形式的參考,它會創建一個新一個在窗體的控件空白/默認值。

如何解決這個很大程度上取決於您的設計。如果你想把你的類與表單實現綁定,我們的類需要對錶單的引用,對控件的引用,或者你感興趣的控件的值傳遞給它。

例如:

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

一個清潔的解決方案是從McDonalds類返回一個值,並讓FORM設定的控制值適當地,而不是捆紮類這種形式的類。

+0

好的謝謝。但是,我如何添加對錶單的引用。 – Peter

+0

您可以將現有表單傳遞給'McDonalds'構造函數。 – banging

+0

據說form1是一種類型,但是像字段,方法或屬性一樣使用。當我嘗試將其傳入構造函數。 – Peter

0

您可以使用Singleton

Singletons make having single instances easy. They allow for single allocations and instances of data. We review the singleton types. We see one of the fastest implementations. And we review other possibilities.

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");