WinForms: Text in Statuszeile



  • Hi,
    ich baue gerade meine erste größere GUI mit den Forms (VS2005 Beta 2, C++/CLI) und versuche mich gerade daran Texte in die Statuszeile wenn ich die Maus über die Schaltflächen, bzw. Menüitems bewege. Nun habe ich eine Notlösung, die mir nicht sonderlich gefällt...

    System::Void newMenuItem_MouseHover(System::Object^ sender, System::EventArgs^ e)
    {
      statusLabel->Text = "Erstellt ein neues Dokument.";
    }
    

    Das muss doch auch irgendwie komfortabler gehen 😕 . Wenn ich für jedes Menüitem zu dem ich einen Statustext haben will so etwas machen muss, dann gute Nacht... Gibt es hier nicht auch so etwas wie eine Stringtable bei MFC-Projekten?

    Ich habe auch schon nach Samples und Tutorials dazu gesucht, aber irgendwie scheint die Statusleiste aus der Mode gekommen zu sein... Sämtliche Samples die ich gefunden habe verzichten jedenfalls darauf.



  • Du koenntest dir eine eigene MenuItem-Klasse erstellen, die beim MouseHover
    noch zusaetzlich ein anderes event aufruft.
    Als zusatzlicher Parameter wuerde dann evtl. der Text des Items uebergeben werden.

    System::Void items_MouseHover(System::Object^ sender, System::EventArgs^ e, System::String^ mnuText)
    {
      statusLabel->Text = mnuText;
    }
    

    Die Methode "items_MouseHover" kannst du ja dann mit einer for-schleife allen
    verwendeten Items zuweise...

    PS:
    Vieleicht im Kontext zu dieser Idee noch eine andere Frage:
    Kann man delegates ueberladen?



  • Du kannst auch für alle MenuItems ein Event abonieren.
    Zum Beispiel:

    private void menuItems_Select(object sender, System.EventArgs e)
    {
    	MenuItem mi = sender as MenuItem;
    	if( mi == null )
    		return;
    	switch( mi.Text )
    	{
    		case "Öffnen": statusBar.Panels[0].Text = "Datei öffnen"; break;
    		case "Beenden": statusBar.Panels[0].Text = "Datei schließen"; break;
    	}
    }
    


  • Hmm, ich dachte das geht irgendwie komfortabler. Naja, ich werde noch was darüber nachdenken! Danke erstmal.



  • Also ich finde die Methode von Noodles sehr praktisch. Ich würds genauso machen, und ich denke, die meisten Programmiersprachen werden das genauso machen. Es hängt ja eigentlich nur von der Entwicklungsumgebung ab ob sie es dich sehen lässt oder nicht.

    Gruß

    Markus Seidl


Anmelden zum Antworten