2016-06-13 10 views
-2

Ich habe eine Windows Form (MainForm1), die einen ToolStrip mit einem Label (StatusLabel) enthält. MainForm1 enthält auch ein Benutzersteuerelement (UserControl1). Das Benutzersteuerelement enthält eine Schaltfläche (Button1). Wenn Button1 angeklickt wird, wird ein DataGridView initialisiert, aber das ist nicht wichtig.Set StatusLabel Text in einem Formular von UserControl

Wenn Button1 in UserControl1 geklickt wird, möchte ich Text in MainForms StatusLabel anzeigen.

Aber ich weiß nicht, wie das von einem UserControl zu dem MainForm zu tun ist.

Das Flussdiagramm beschreibt, wie ich es gerne hätte.

+0

Bietet einen Weg für 'UserControl', um auf Text zuzugreifen. Es gibt viele Möglichkeiten: public (static?) Eigenschaft von 'MainForm' (zugänglich von überall), Ereignis von' UserControl' (Formular subskribieren und Text ändern, wenn 'UserControl' dies sagt), Callback/Interface an' UserControl' übergeben (zB als Konstruktorparameter) – Sinatr

+2

[Wie füge ich dem statusStrip Werte aus einem Formularsteuerelement hinzu?] (Https://stackoverflow.com/questions/37483278/how-doi-i-feed-values-to-the-statusstrip-from-a-form -Steuerung) –

Antwort

0

du User Control

public event EventHandler<string> MessageHasSent; 
public void SendMessage(string message) 
{ 
    EventHandler<string> ms = MessageHasSent; 
    if (ms!= null) 
    { 
     ms(this,message); 
    } 
} 

Und in jeder in Ihrem durch ein Ereignis Schaffung einfach tun können, wo in Ihrer Klasse, dass Sie diese event.In Ihrem Fall Sie wollen anheben wollen Klicken Sie auf die Schaltfläche Nachricht senden

public Button1_Click(object sender,EventArgs e) 
{ 
    SendMessage("YourMessage"); 
} 

Und verwenden Sie es wie andere Ereignisse.In Ihrem MainForm verwendet dieses Ereignis Ihres Benutzersteuerelements.

public class MainForm:Form 
{ 
    public MainForm() 
    { 
     UserControl1.MessageHasSent +=SetToolStripLabel; 
    } 
    public SetToolStripLabel(object sender,string e) 
    { 
     //Set e to Label 
    } 
}