tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von rd4eva
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
407
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    larabad larabad ist offline Grünschnabel
    Registriert seit
    Sep 2009
    Beiträge
    3
    Hallo zusammen.
    Ich habe mal kurz eine Frage.
    Kann man mit einem codeerzeugten clickevent eine variable mit übergeben ?! also:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
     while ((line1 = sr1.ReadLine()) != null)
                                {
                                    // string tmp_zeile = line;
                                    // string[] tmp_zeile2 = tmp_zeile.Split(new Char[] { '|' });
                                    mnu.DropDownItems.Add(line1, null);
                                    string tutorials = line1;
                                    mnu.DropDownItemClicked += test(line1);//bzw new clickevent
                                    //    += (Click, args) =>
                                    //{
                                    //    MessageBox.Show(line1);
                                    //};
                                }
     
     
     
    public void clickevent(object sender, ToolStripItemClickedEventArgs e)
    {
    hier soll die variable tutorials erreichbar sein.
    }


    danke für eure Hilfe..

    gruß
     

  2. #2
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    Du kannst einem Event keine Variablen übergeben.
    Es gibt ein paar Möglichkeiten wie du das Problem lösen kannst.
    - Mit delegates arbeiten
    - Die Variable global definieren
    - Die Variable im sender "verstauen" (Der Tag member ist dafür ganz gut geeignet)
     
    In order to understand recursion, one must first understand recursion.

  3. #3
    larabad larabad ist offline Grünschnabel
    Registriert seit
    Sep 2009
    Beiträge
    3
    Zitat Zitat von rd4eva Beitrag anzeigen
    Du kannst einem Event keine Variablen übergeben.
    Es gibt ein paar Möglichkeiten wie du das Problem lösen kannst.
    - Mit delegates arbeiten
    - Die Variable global definieren
    - Die Variable im sender "verstauen" (Der Tag member ist dafür ganz gut geeignet)
    hallo, danke für deine antwort!
    wie kann ich das in den sender verstaun ?!
    sry bin erst im ersten jahr XD
     

  4. #4
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    So zum Beispiel:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    private void Form1_Load(object sender, System.EventArgs e)
            {
                string itemName = "Menuitem ";
                for (int i = 1; i < 4; i++)
                {
                    ToolStripMenuItem tsItem = new ToolStripMenuItem();
                    tsItem.Text = itemName + i;
                    tsItem.Tag = tsItem.Text;
     
                    this.toolStripDropDownButton1.DropDownItems.Add(tsItem);
                }
     
                this.toolStripDropDownButton1.DropDownItemClicked += new ToolStripItemClickedEventHandler(toolStripDropDownButton1_DropDownItemClicked);
                
            }
     
            void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                MessageBox.Show(e.ClickedItem.Tag.ToString());
            }

    Ein Beispiel für die globale Variable ( Das ist in diesem Fall wirklich eine sehr unschöne Variante ):
    Code csharp:
    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
    
    private List<string> tsItems;
     
            private void Form1_Load(object sender, System.EventArgs e)
            {
                this.tsItems = new List<string>();
                string itemName = "Menuitem ";
                for (int i = 1; i < 4; i++)
                {
                    ToolStripMenuItem tsItem = new ToolStripMenuItem();
                    tsItem.Text = itemName + i;
     
                    this.toolStripDropDownButton1.DropDownItems.Add(tsItem);
                    tsItems.Add(tsItem.Text);
                }
                this.toolStripDropDownButton1.DropDownItemClicked += new ToolStripItemClickedEventHandler(toolStripDropDownButton1_DropDownItemClicked);
     
            }
     
            void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                for (int i = 0; i < this.toolStripDropDownButton1.DropDownItems.Count; i++)
                {
                    if (this.toolStripDropDownButton1.DropDownItems[i].Selected)
                        MessageBox.Show(this.tsItems[i]);
                }
            }

    Hier noch ein Beispiel mit delegates ( auch ziemlich unschön in diesem Fall )
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    private void Form1_Load(object sender, System.EventArgs e)
            {            
                string itemName = "Menuitem ";
                for (int i = 1; i < 4; i++)
                {
                    ToolStripMenuItem tsItem = new ToolStripMenuItem();
                    tsItem.Text = itemName + i;
     
                    this.toolStripDropDownButton1.DropDownItems.Add(tsItem);
                    tsItem.Click += delegate { this.tsItemClicked(tsItem, tsItem.Text); };
                }
     
            }
     
            private void tsItemClicked(ToolStripMenuItem item, string tutorials)
            {
                MessageBox.Show(tutorials);
            }

    Wie gesagt die letzten beiden Beispiel würde ich so auch nicht verwenden weil sie in diesem Fall einfach unpraktikabel sind. Aber es reicht hoffentlichum das Prinzip zu verstehen.
    larabad bedankt sich. 
    In order to understand recursion, one must first understand recursion.

  5. #5
    larabad larabad ist offline Grünschnabel
    Registriert seit
    Sep 2009
    Beiträge
    3
    Zitat Zitat von rd4eva Beitrag anzeigen
    So zum Beispiel:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    private void Form1_Load(object sender, System.EventArgs e)
            {
                string itemName = "Menuitem ";
                for (int i = 1; i < 4; i++)
                {
                    ToolStripMenuItem tsItem = new ToolStripMenuItem();
                    tsItem.Text = itemName + i;
                    tsItem.Tag = tsItem.Text;
     
                    this.toolStripDropDownButton1.DropDownItems.Add(tsItem);
                }
     
                this.toolStripDropDownButton1.DropDownItemClicked += new ToolStripItemClickedEventHandler(toolStripDropDownButton1_DropDownItemClicked);
                
            }
     
            void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                MessageBox.Show(e.ClickedItem.Tag.ToString());
            }

    Ein Beispiel für die globale Variable ( Das ist in diesem Fall wirklich eine sehr unschöne Variante ):
    Code csharp:
    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
    
    private List<string> tsItems;
     
            private void Form1_Load(object sender, System.EventArgs e)
            {
                this.tsItems = new List<string>();
                string itemName = "Menuitem ";
                for (int i = 1; i < 4; i++)
                {
                    ToolStripMenuItem tsItem = new ToolStripMenuItem();
                    tsItem.Text = itemName + i;
     
                    this.toolStripDropDownButton1.DropDownItems.Add(tsItem);
                    tsItems.Add(tsItem.Text);
                }
                this.toolStripDropDownButton1.DropDownItemClicked += new ToolStripItemClickedEventHandler(toolStripDropDownButton1_DropDownItemClicked);
     
            }
     
            void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                for (int i = 0; i < this.toolStripDropDownButton1.DropDownItems.Count; i++)
                {
                    if (this.toolStripDropDownButton1.DropDownItems[i].Selected)
                        MessageBox.Show(this.tsItems[i]);
                }
            }

    Hier noch ein Beispiel mit delegates ( auch ziemlich unschön in diesem Fall )
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    private void Form1_Load(object sender, System.EventArgs e)
            {            
                string itemName = "Menuitem ";
                for (int i = 1; i < 4; i++)
                {
                    ToolStripMenuItem tsItem = new ToolStripMenuItem();
                    tsItem.Text = itemName + i;
     
                    this.toolStripDropDownButton1.DropDownItems.Add(tsItem);
                    tsItem.Click += delegate { this.tsItemClicked(tsItem, tsItem.Text); };
                }
     
            }
     
            private void tsItemClicked(ToolStripMenuItem item, string tutorials)
            {
                MessageBox.Show(tutorials);
            }

    Wie gesagt die letzten beiden Beispiel würde ich so auch nicht verwenden weil sie in diesem Fall einfach unpraktikabel sind. Aber es reicht hoffentlichum das Prinzip zu verstehen.
    Danke dir ! =)
    werde dann wahrscheinlich auhc das 1. nehmen .. Vielen Dank hast mir bei meinem Programm weiter geholfen.. hoffe nur nicht, das der clicked event 2 x aufgerufen wird ?! bei mir macht ers aus irgendeinem grund -.-
     

Ähnliche Themen

  1. Übergabe einer Variable und Variable=global?
    Von Master Flexi im Forum PHP
    Antworten: 16
    Letzter Beitrag: 11.04.07, 13:19
  2. Antworten: 2
    Letzter Beitrag: 11.09.05, 13:30
  3. Problem mit Übergabe einer Variable
    Von Starfighter1 im Forum PHP
    Antworten: 0
    Letzter Beitrag: 22.07.05, 22:27
  4. Antworten: 3
    Letzter Beitrag: 05.02.04, 23:00
  5. Variable Übergabe per Post
    Von mageDSA im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 24.07.02, 11:27

Stichworte