Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#]Elemento generato ma non esistente
Forum - C# / VB.NET - [C#]Elemento generato ma non esistente

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 15:30
Venerdì, 01/01/2010
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#

  1. do
  2.             {
  3.                 string file1 = Convert.ToString(files2[num1 - 1]);
  4.                 string[] parti = file1.Split(new string[] { "/" }, StringSplitOptions.None);
  5.                 num1++;
  6.                 string parte = parti[1].Remove(parti[1].Length - 4, 4);
  7.                 ToolStripMenuItem toolStripMenuItem1 = new ToolStripMenuItem("Crosshair_" + parte);
  8.                 toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
  9.                 this.CrosshairContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { toolStripMenuItem1 });
  10.                 toolStripMenuItem1.Name = "Crosshair_" + parte;
  11.                 toolStripMenuItem1.Text = parte;
  12.                 toolStripMenuItem1.CheckOnClick = true;
  13.                 toolStripMenuItem1.Click += cambio;
  14.                 files3.Add(parte);
  15.                 num--;
  16.             } 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

  1. private void cambio(object sender, EventArgs e)
  2.         {
  3.  this.Crosshair_Default.Checked = true;// dando di fatto che il metodo sopara generi un elemento con name Crosshair_Default
  4.         }


il probblema e che Crosshair_Default nn esiste e quindi mi genera un errore
mi potete aiutare a trovare una soluzione?
grazie mille

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:17
Lunedì, 04/01/2010
Sarebbe this.toolStripMenu1.Controls["Crosshair_Default"].

Ultima modifica effettuata da Il Totem il 04/01/2010 alle 11:18
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 2:23
Mercoledì, 06/01/2010
quindi basta fare
Codice sorgente - presumibilmente C# / VB.NET

  1. 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
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:46
Giovedì, 07/01/2010
Beh, è vero. In questo caso è Items, la collezione che hai usato anche tu per aggiungere l'elemento al menù.

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 18:21
Giovedì, 07/01/2010
scusa ma non ti seguo... nel mio caso che cosa bisognerebbe fare?
grazie

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:01
Sabato, 09/01/2010
Nel tuo codice non hai forse scritto: ?
Codice sorgente - presumibilmente Plain Text

  1. 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

  1. 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

  1. this.CrosshairContextMenuStrip.Items("nome");


per ottenere l'elemento di nome "nome".

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 18:29
Martedì, 12/01/2010
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

  1. 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

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:01
Mercoledì, 13/01/2010
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.

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 20:56
Mercoledì, 13/01/2010
grazie un probblema è risolto ma ancora non mi funziona se io faccio come ti ho scritto sopra:
Codice sorgente - presumibilmente Plain Text

  1. this.CrosshairContextMenuStrip.Items["Default"].Checked = true;


checked non è dispomnibile
proprio non capisco perchè
eppure ho fatto proprio come hai detto te

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo