2010-11-24 24 views

Antwort

4

Wahrscheinlich ist Ihr Problem auf den Umfang der Richtextbox-Steuerelemente zurückzuführen. Wenn Sie ein Steuerelement in einem Formular erstellen, hat es standardmäßig in WinForms den Bereich Private. Dies bedeutet, dass auf das Steuerelement nicht direkt aus dem Code eines anderen Formulars zugegriffen werden kann. Dafür gibt es mehrere Möglichkeiten. Die einfachste, es zu ändern in dieser Erklärung (Public/intern) auf einen breiteren Anwendungsbereich wäre, die als erlauben würden Sie etwas entlang der Linien von, dies zu tun:

richTextBox1.Text = Form2.richTextBox1.Text; 

* Dies setzt voraus, Ihren Code in Form1 und Ihre Die zweite Form heißt Form2. Offensichtlich müsste das entsprechend geändert werden.

Dies wird nicht als gute Vorgehensweise angesehen, da potenzielle Risiken damit verbunden sind, dass andere Abschnitte Ihres Programms die Steuerelemente in diesem Formular bearbeiten dürfen. Ihre idealen Lösungen zum Übergeben von Informationen an ein Formular sind entweder über den Konstruktor, eine ordnungsgemäß definierte Methode, eine ordnungsgemäß definierte Eigenschaft oder in einigen Fällen über ein Ereignis abhängig von der Art der Information und wann sie geändert werden kann und wofür sie verwendet wird.

Ohne zu viele Details über Ihren speziellen Fall zu wissen, würde ich wahrscheinlich eine Methode empfehlen, weil dies der einfachste Fall wäre.

public void UpdateText(string value) { 
    richTextBox1.Text = value; 
} 

Dies würde andere Formen zulassen und steuert diese Methode aufrufen, die wiederum den Text des RichTextBox aktualisieren würde.

Ich werde feststellen, dass keines dieser Beispiele im Produktionscode verwendet werden sollte (ich zeige nicht, wie man Probleme mit Kreuzthreading oder Datenvalidierung behandelt), aber ich nehme an, dass Sie die Frage mehr tun eine Lernübung.

0

So:

richTextBox1.Text = richTextBox2.Text; 

Und wenn Sie wollen, um Text anfügen dann:

richTextBox1.Text += richTextBox2.Text; 
1

Wenn Sie einen Wert auf neues Formular verschieben möchten Sie können Verwenden Sie Constructor der neuen Form:

public Form2(string text) 
{ 
    textbox1.Text = text; 
} 

und wenn Sie das neue Formular einen Wert zu aktuellen Form zurückkehren möchten Sie Property in neue Form verwenden:

public string Value 
{ 
    get 
    { 
     return textbox1.Text; 
    } 
} 

und im Einsatz:

using (var instance = new Form2()) 
{ 
    instance.Show(); 
    returnValue = instance.Value; 
} 
1

Ich gehe davon aus, dass Sie Ihr neues Formular aufrufen aus dem Hauptformular. In diesem Fall können Sie entweder den Absender verwenden, um die Instanz abzurufen, oder Sie können über die Eigenschaft Parent und seine untergeordneten Elemente auf das andere Formular verweisen, wenn es sich bei dem anderen Formular um ein anderes Kind handelt.

Verwandte Themen