Entwickler-Ecke

WinForms - Variable Menues


blutengel - Sa 11.08.12 22:42
Titel: Variable Menues
Hi,

ich bin gerade dabei ein Programm zu schreiben in dem ich über den Com Port mit einem µC komuniziere.
Jetzt möchte ich unter dem Menüpunkt einstellungen meinen Com Port einstellen können.

Über:

C#-Quelltext
1:
string[] Portnames = System.IO.Ports.SerialPort.GetPortNames();                    


kann ich die verfügbaren Ports auslesen. Jetzt soll unter Einstellungen der Punkt Com Port
auftauchen und darin soll sich ein weiterer MenuItem öffnen in dem die verfügbaren Ports aufgelistet sind, und ich sie da sofort auswählen kann.

Ich da da leider noch keine Ahnung wie ich das machen könnte.

Ich hoffe es kann mir hier einer weiter helfen.


MFG

blutengel


Christoph1972 - So 12.08.12 10:16

Hi, das sollt eine schnelle Lösung sein:


C#-Quelltext
1:
deineComboBox.DataSource = System.IO.Ports.SerialPort.GetPortNames();                    


jfheins - So 12.08.12 11:55

Ich vermute mal, es geht vor allem darum, die Auswahl in das Mainmenu hinein zu bekommen.
Für diesen Fall habe ich eine Lösung parat. Folgender Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
    public partial class Form1 : Form
    {
        string SelectedPort = "";

        public Form1()
        {
            InitializeComponent();
        }

        private string[] GetPortNames()
        {
            return new string[] { "COM 1""COM 2""COM 12" };
        }

        private void cOMPortsToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
        {
            cOMPortsToolStripMenuItem.DropDownItems.Clear();
            foreach (var item in GetPortNames())
            {
                var myMenuItem = new ToolStripMenuItem(item);
                if (item == SelectedPort)
                    myMenuItem.Checked = true;
                myMenuItem.Click += toolStripMenuItem_Click;
                cOMPortsToolStripMenuItem.DropDownItems.Add(myMenuItem);
            }
        }

        private void toolStripMenuItem_Click(object sender, EventArgs e)
        {
            SelectedPort = (sender as ToolStripMenuItem).Text;
        }
    }

Für die COM-Port Auflistung musste ich mir ein Mock-up programmieren, sowas hat mein PC nicht mehr :wink:

In der GUI ist ein Menüpunkt mit einem Leerzeichen eingefügt, damit der Pfeil für das Untermenü da ist:
(Und der Menüpunkt "COM Port" erhält ein DropDownOpening-Event)
mainmenu