Oppure

Loading
01/01/10 14:30
Roby94
salve ho un grosso probblema con un form con un do che per ogni file in una cartella compila un tool strip menu
do
            {
                string file1 = Convert.ToString(files2[num1 - 1]);
                string[] parti = file1.Split(new string[] { "/" }, StringSplitOptions.None);
                num1++;
                string parte = parti[1].Remove(parti[1].Length - 4, 4);
                ToolStripMenuItem toolStripMenuItem1 = new ToolStripMenuItem("Crosshair_" + parte);
                toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
                this.CrosshairContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { toolStripMenuItem1 });
                toolStripMenuItem1.Name = "Crosshair_" + parte;
                toolStripMenuItem1.Text = parte;
                toolStripMenuItem1.CheckOnClick = true;
                toolStripMenuItem1.Click += cambio;
                files3.Add(parte);
                num--;
            } while (num != 0);

e fino qui c siamo, solo che dopo creo il metodo cmabio, ma se lo scrivo cosi
private void cambio(object sender, EventArgs e)
        {
 this.Crosshair_Default.Checked = true;// dando di fatto che il metodo sopara generi un elemento con name Crosshair_Default
        }

il probblema e che Crosshair_Default nn esiste e quindi mi genera un errore
mi potete aiutare a trovare una soluzione?
grazie mille
aaa
04/01/10 10:17
Il Totem
Sarebbe this.toolStripMenu1.Controls["Crosshair_Default"].
Ultima modifica effettuata da Il Totem 04/01/10 10:18
aaa
06/01/10 1:23
Roby94
quindi basta fare
this.toolStripMenu1.Controls["Crosshair_Default"].Checked = true 

perfetto grazie mille
EDIT:
Ho provato ma mi risponde con l'errore:
"'System.Windows.Forms.ToolStripMenuItem' non contiene una definizione di 'Controls' e non è stato trovato alcun metodo di estensione 'Controls'che accetta un primo argomento di tipo 'System.Windows.Forms.ToolStripMenuItem'. Probabilmente manca una direttiva using o un riferimento a un assembly."
non è che manca qualcosa???
grazie
Ultima modifica effettuata da Roby94 06/01/10 11:59
aaa
07/01/10 16:46
Il Totem
Beh, è vero. In questo caso è Items, la collezione che hai usato anche tu per aggiungere l'elemento al menù.
aaa
07/01/10 17:21
Roby94
scusa ma non ti seguo... nel mio caso che cosa bisognerebbe fare?
grazie
aaa
09/01/10 13:01
Il Totem
Nel tuo codice non hai forse scritto: ?
this.CrosshairContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { toolStripMenuItem1 }); 

Codice, tra l'altro, inutile, perchè AddRange serve per aggiungere una sequenza di elementi mentre tu ne stai aggiungendo uno solo (ragion per cui devi scrivere new ToolStripItem[]). Il codice più corretto sarebbe:
this.CrosshairContextMenuStrip.Items.Add(toolStripMenuItem1);


Ad ogni modo, stavo dicendo che tu hai aggiunto l'elemento alla collezione Items. Perciò è ovvio che se lo vuoi riprendere, dovrai guardare proprio dove l'hai inserito, ossia in Items. Non ricordo se sia lecito o meno scrivere qualcosa di simile:
this.CrosshairContextMenuStrip.Items("nome");

per ottenere l'elemento di nome "nome".
aaa
12/01/10 17:29
Roby94
Scusa se non ho risposto subito ma in questi giorni sono stato troppo impegnato con la scuola comunque la parte sull'aggiungere il toolstripmenu l'ho modificato come mi hai consigliato tu..... però rimango bloccato sulla parte che ho chiesto.. mettiamola come esempio:
ho generato l'elemento default e premendo un pulsante devo modificare il suo stato check da false a true ma se scrivo:
this.CrosshairContextMenuStrip.Items("Default").Checked = true;

mi ritorna un errore esattamente:
"Impossibile utilizzare il membro non richiamabile 'System.Windows.Forms.ToolStrip.Items' come metodo."
e proprio non riesco a capire come funziona questa parte ho passato tanto tempo a cercare online la parte riferita a items, ma niente che centri con il tuo esempio.
non è che mi puoi fare un esempio di applicazione.
ovviamente se puoi
grazie mille
aaa
13/01/10 16:01
Il Totem
No, è che in C# si usano le parentesi quadre per accedere agli elementi di una collezione, mentre in VB quelle tonde, perciò mi sono confuso.
aaa