Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
salve ho un grosso probblema con un form con un do che per ogni file in una cartella compila un tool strip menu
Codice sorgente - presumibilmente C# |
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
Codice sorgente - presumibilmente C# / VB.NET |
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 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Sarebbe this.toolStripMenu1.Controls["Crosshair_Default"].
Ultima modifica effettuata da Il Totem il 04/01/2010 alle 11:18 |
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
quindi basta fare
Codice sorgente - presumibilmente C# / VB.NET |
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 il 06/01/2010 alle 12:59 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Beh, è vero. In questo caso è Items, la collezione che hai usato anche tu per aggiungere l'elemento al menù.
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
scusa ma non ti seguo... nel mio caso che cosa bisognerebbe fare?
grazie
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Nel tuo codice non hai forse scritto: ?
Codice sorgente - presumibilmente Plain Text |
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:
Codice sorgente - presumibilmente Plain Text |
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:
Codice sorgente - presumibilmente Plain Text |
this.CrosshairContextMenuStrip.Items("nome");
|
per ottenere l'elemento di nome "nome". |
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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:
Codice sorgente - presumibilmente Plain Text |
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
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
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.
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
grazie un probblema è risolto ma ancora non mi funziona se io faccio come ti ho scritto sopra:
Codice sorgente - presumibilmente Plain Text |
this.CrosshairContextMenuStrip.Items["Default"].Checked = true;
|
checked non è dispomnibile
proprio non capisco perchè
eppure ho fatto proprio come hai detto te
|
|