elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con una propiedad tipo lista en un custom control
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con una propiedad tipo lista en un custom control  (Leído 9,500 veces)
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ayuda con una propiedad tipo lista en un custom control
« Respuesta #20 en: 13 Marzo 2011, 18:23 pm »

Te lo dijo aquí :rolleyes:



En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Ayuda con una propiedad tipo lista en un custom control
« Respuesta #21 en: 13 Marzo 2011, 19:51 pm »

Ya lo leí hermano, pero no entendí cómo aplicarlo a mi caso. Gracias.


En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Ayuda con una propiedad tipo lista en un custom control
« Respuesta #22 en: 13 Marzo 2011, 20:14 pm »

Para detectar el cambio te dije que sobreescribieras el InsertItem .. :)
En línea

<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Ayuda con una propiedad tipo lista en un custom control
« Respuesta #23 en: 19 Marzo 2011, 05:06 am »

Sigo insistiendo aquí porque todavía tengo algunos problemas con la propiedad tipo colección.
Antes que nada, debo decir que ya pude detectar el cambio en la colección. En efecto, había que lanzar el evento público ControlAdded desde el evento InsertItem sobreescrito de la colección, y luego suscribirse al mismo desde el UserControl contenedor, cómo sugirieron. Ahora bien, ¿cómo se hace la suscripción? Estuve esperando esa respuesta todo el tiempo, más nunca me llegó; apenas vine a saberlo hace unos minutos.
Resulta que lo único que había que hacer era agregar WithEvents a la declaración de la variable que complementa a la propiedad colección, y luego agregar Handles variable.ControlAdded al método que incluye y ordena los botones.
Ahora bien, como mencioné antes, mis problemas no han terminado, así que requiero de su pericia nuevamente.
Resulta que, por alguna extraña razón que desconozco, el evento RemoveItem no se ejecuta al remover un ítem de la colección. De verdad no lo entiendo. Hice lo mismo que con InsertItem y nada que me da resultado, pues noté que la compilación no entra en el bloque RemoveItem cuando remuevo un ítem de la colección. ¿Por qué pasa eso?
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Ayuda con una propiedad tipo lista en un custom control
« Respuesta #24 en: 19 Marzo 2011, 13:19 pm »

Eso no debería pasar. Podrías postear el codigo del Collection.

Un saludo!

PD: Encontré esto en MSDN:

Código
  1. Imports System
  2. Imports System.Collections.Generic
  3. Imports System.Collections.ObjectModel
  4.  
  5. Public Class Dinosaurs
  6.    Inherits Collection(Of String)
  7.  
  8.    Public Event Changed As EventHandler(Of DinosaursChangedEventArgs)
  9.  
  10.    Protected Overrides Sub InsertItem( _
  11.        ByVal index As Integer, ByVal newItem As String)
  12.  
  13.        MyBase.InsertItem(index, newItem)
  14.  
  15.        RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _
  16.            ChangeType.Added, newItem, Nothing))
  17.    End Sub
  18.  
  19.    Protected Overrides Sub SetItem(ByVal index As Integer, _
  20.        ByVal newItem As String)
  21.  
  22.        Dim replaced As String = Items(index)
  23.        MyBase.SetItem(index, newItem)
  24.  
  25.        RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _
  26.            ChangeType.Replaced, replaced, newItem))
  27.    End Sub
  28.  
  29.    Protected Overrides Sub RemoveItem(ByVal index As Integer)
  30.  
  31.        Dim removedItem As String = Items(index)
  32.        MyBase.RemoveItem(index)
  33.  
  34.        RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _
  35.            ChangeType.Removed, removedItem, Nothing))
  36.    End Sub
  37.  
  38.    Protected Overrides Sub ClearItems()
  39.        MyBase.ClearItems()
  40.  
  41.        RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _
  42.            ChangeType.Cleared, Nothing, Nothing))
  43.    End Sub
  44.  
  45. End Class
  46.  
  47. ' Event argument for the Changed event.
  48. '
  49. Public Class DinosaursChangedEventArgs
  50.    Inherits EventArgs
  51.  
  52.    Public ReadOnly ChangedItem As String
  53.    Public ReadOnly ChangeType As ChangeType
  54.    Public ReadOnly ReplacedWith As String
  55.  
  56.    Public Sub New(ByVal change As ChangeType, ByVal item As String, _
  57.        ByVal replacement As String)
  58.  
  59.        ChangeType = change
  60.        ChangedItem = item
  61.        ReplacedWith = replacement
  62.    End Sub
  63. End Class
  64.  
  65. Public Enum ChangeType
  66.    Added
  67.    Removed
  68.    Replaced
  69.    Cleared
  70. End Enum
  71.  
  72. Public Class Demo
  73.  
  74.    Public Shared Sub Main()
  75.  
  76.        Dim dinosaurs As New Dinosaurs
  77.  
  78.        AddHandler dinosaurs.Changed, AddressOf ChangedHandler
  79.  
  80.        dinosaurs.Add("Psitticosaurus")
  81.        dinosaurs.Add("Caudipteryx")
  82.        dinosaurs.Add("Compsognathus")
  83.        dinosaurs.Add("Muttaburrasaurus")
  84.  
  85.        Display(dinosaurs)
  86.  
  87.        Console.WriteLine(vbLf & "IndexOf(""Muttaburrasaurus""): {0}", _
  88.            dinosaurs.IndexOf("Muttaburrasaurus"))
  89.  
  90.        Console.WriteLine(vbLf & "Contains(""Caudipteryx""): {0}", _
  91.            dinosaurs.Contains("Caudipteryx"))
  92.  
  93.        Console.WriteLine(vbLf & "Insert(2, ""Nanotyrannus"")")
  94.        dinosaurs.Insert(2, "Nanotyrannus")
  95.  
  96.        Console.WriteLine(vbLf & "dinosaurs(2): {0}", dinosaurs(2))
  97.  
  98.        Console.WriteLine(vbLf & "dinosaurs(2) = ""Microraptor""")
  99.        dinosaurs(2) = "Microraptor"
  100.  
  101.        Console.WriteLine(vbLf & "Remove(""Microraptor"")")
  102.        dinosaurs.Remove("Microraptor")
  103.  
  104.        Console.WriteLine(vbLf & "RemoveAt(0)")
  105.        dinosaurs.RemoveAt(0)
  106.  
  107.        Display(dinosaurs)
  108.  
  109.    End Sub
  110.  
  111.    Private Shared Sub Display(ByVal cs As Collection(Of String))
  112.        Console.WriteLine()
  113.        For Each item As String In cs
  114.            Console.WriteLine(item)
  115.        Next item
  116.    End Sub
  117.  
  118.    Private Shared Sub ChangedHandler(ByVal source As Object, _
  119.        ByVal e As DinosaursChangedEventArgs)
  120.  
  121.        If e.ChangeType = ChangeType.Replaced Then
  122.            Console.WriteLine("{0} was replaced with {1}", _
  123.                e.ChangedItem, e.ReplacedWith)
  124.  
  125.        ElseIf e.ChangeType = ChangeType.Cleared Then
  126.            Console.WriteLine("The dinosaur list was cleared.")
  127.  
  128.        Else
  129.            Console.WriteLine("{0} was {1}.", _
  130.                e.ChangedItem, e.ChangeType)
  131.        End If
  132.    End Sub
  133.  
  134. End Class
  135.  
  136. ' This code example produces the following output:
  137. '
  138. 'Psitticosaurus was Added.
  139. 'Caudipteryx was Added.
  140. 'Compsognathus was Added.
  141. 'Muttaburrasaurus was Added.
  142. '
  143. 'Psitticosaurus
  144. 'Caudipteryx
  145. 'Compsognathus
  146. 'Muttaburrasaurus
  147. '
  148. 'IndexOf("Muttaburrasaurus"): 3
  149. '
  150. 'Contains("Caudipteryx"): True
  151. '
  152. 'Insert(2, "Nanotyrannus")
  153. 'Nanotyrannus was Added.
  154. '
  155. 'dinosaurs(2): Nanotyrannus
  156. '
  157. 'dinosaurs(2) = "Microraptor"
  158. 'Nanotyrannus was replaced with Microraptor
  159. '
  160. 'Remove("Microraptor")
  161. 'Microraptor was Removed.
  162. '
  163. 'RemoveAt(0)
  164. 'Psitticosaurus was Removed.
  165. '
  166. 'Caudipteryx
  167. 'Compsognathus
  168. 'Muttaburrasaurus
  169.  

En línea

<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Ayuda con una propiedad tipo lista en un custom control
« Respuesta #25 en: 22 Marzo 2011, 21:21 pm »

Bueno, después de tanto revisar y probar noté que el problema con Remove solo se presenta en modo de diseño. Es decir, cuando agrego mi control a un formulario y accedo a la colección a través de la propiedad, y le quito items, pues no se ejecuta el Remove de la colacción; pero si pongo un botón en el formulario para remover un item, ejecuto la aplicación y oprimo el botón, ahí sí se ejecuta el bloque Remove. No sé por qué pero así ocurre. Lo extraño es que en modo diseño sí se ejecuta el bloque Add. ¿Alguna idea de por qué?
En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con la propiedad MouseDown del control Image1
Programación Visual Basic
kakinets 7 3,032 Último mensaje 28 Julio 2005, 05:19 am
por APOKALYPSE
Lista en control de usuario
Programación Visual Basic
SheKeL_C$ 2 1,174 Último mensaje 23 Marzo 2011, 04:56 am
por seba123neo
Que tipo de lista dinamica me conviene utilizar? « 1 2 »
.NET (C#, VB.NET, ASP)
Skeletron 18 7,488 Último mensaje 13 Febrero 2010, 06:09 am
por Skeletron
Intentando crear un array de tipo Lista en c++
Programación C/C++
SXF 2 1,025 Último mensaje 1 Diciembre 2012, 20:29 pm
por SXF
HTTP CUSTOM , necesito ayuda
Dudas Generales
Benja279 1 424 Último mensaje 25 Abril 2021, 20:12 pm
por [D]aniel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines