|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 18
|
c# problema delegate
Codice:
private delegate void SelectListBoxItemDelegate(object item); private void SelectListBoxItem(object item) { if (this.listBox2.InvokeRequired) { // This is a worker thread so delegate the task. this.listBox2.Invoke(new SelectListBoxItemDelegate(this.SelectListBoxItem), item); } else { // This is the UI thread so perform the task. Console.WriteLine(this.listBox2.Items[(item)].ToString()); } } Codice:
Errore 2 La corrispondenza migliore del metodo di overload per 'System.Windows.Forms.ListBox.ObjectCollection.this[int]' presenta alcuni argomenti non validi Codice:
Errore 3 Argomento 1: impossibile convertire da 'object' a 'int' |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
gli int in c# non sono object, sono struct e this.SelectListBoxItem mi sa che e' un int.
__________________
![]() Ultima modifica di ^TiGeRShArK^ : 09-05-2011 alle 22:24. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
|
Quote:
![]() ma...cosa vorresti fare perdonami? |
|
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Apr 2008
Città: Prov di TO
Messaggi: 136
|
Gli int in C# sono value types, struct e derivano implicitamente da System.ValueType, sono quindi anche dei System.Object.
__________________
Motherboard: ASUS P8P67 EVO, CPU : INTEL Core i5 3570 Scheda Video: nVidia GTX 760, RAM: Kingston 2x4Gb SSD: Samsung 840 Evo, Scheda Audio: Creative Sound Blaster ZX, OS: Windows 8.1 Pro 64Bit |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Quote:
Che siano passabili attraverso boxing ad un metodo che accetta object non significa nulla. Per il topic: Codice:
Console.WriteLine(this.listBox2.Items[(int)item].ToString()); |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Apr 2008
Città: Prov di TO
Messaggi: 136
|
Se stai usando .NET Framework dal 3.0 in su almeno, ti consiglio di non dichiarare un nuovo delegate a meno che non sia strettamente necessario.
Ti consiglio invece di usare i delegate generici: Codice:
Action<int> SelectionAction = (selItem) => {}; Codice:
private delegate void SelectListBoxItemDelegate(object item); Codice:
private delegate void SelectListBoxItemDelegate(int item);
__________________
Motherboard: ASUS P8P67 EVO, CPU : INTEL Core i5 3570 Scheda Video: nVidia GTX 760, RAM: Kingston 2x4Gb SSD: Samsung 840 Evo, Scheda Audio: Creative Sound Blaster ZX, OS: Windows 8.1 Pro 64Bit |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:58.