Foros del Web » Programación para mayores de 30 ;) » .NET »

Deshabilitar los controles de una pagina

Estas en el tema de Deshabilitar los controles de una pagina en el foro de .NET en Foros del Web. Hola, tengo un formulario que uso para dar de alta un registro. Pero luego de ser dado de alta no quiero que se modifique, pero ...
  #1 (permalink)  
Antiguo 05/10/2004, 11:48
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 8 meses
Puntos: 0
Deshabilitar los controles de una pagina

Hola, tengo un formulario que uso para dar de alta un registro. Pero luego de ser dado de alta no quiero que se modifique, pero si que sirva de consulta.
Quiero setear como disabled todos los controles, se podra hacer recorriendo alguna coleccion, algo asi:

Dim frmTextBox As TextBox

For intN = 1 To Me.Controls.Count() - 1

If TypeOf (Me.Controls.Item(intN) Is TextBox) Then
frmTextBox = Me.Controls.Item(intN)
frmTextBox.Enabled = False

ElseIf TypeOf (Me.Controls.Item(intN)) Is TextBox Then
End If
Me.Controls.Item(intN).GetType()

Next

Esto no me anda, como puedo referenciar los controles ????

Gracias, Daniel.
  #2 (permalink)  
Antiguo 05/10/2004, 13:14
Avatar de sindestino  
Fecha de Ingreso: noviembre-2003
Ubicación: xxxx xxxx
Mensajes: 270
Antigüedad: 20 años, 6 meses
Puntos: 0
el problema es que cada colección de controles puede tener a su vez controles que sean colecciones de controles ¿se entiende?
P.Ej.: una tabla es una colección de controles que tiene un textbox, un image y un panel, que también tiene su colección de controles la cual incluye un botón, etc.

Lo que yo hago para recorrer los controles de una página es hacerme una función RECURSIVA que reciba como parámetro una ControlCollection. Dicha función recorre todos los controles de la collección haciendo cierto trabajo en ellos (deshabilitarlos u otra cosa) y verifica que cada control no tenga su propia CC, en caso de que si lo tenga, la función se vuelve a llamar pasándole como parámetros esta nueva Colección.
De ésta forma se recorren TODOS los controles de la página.

Ojalá que te sirva de orientación, saludos
  #3 (permalink)  
Antiguo 05/10/2004, 15:01
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 8 meses
Puntos: 0
Muchas gracias Sin Destino, hice lo que me sugeriste y arme una función recursiva. Anda Perfecto.

Por si a alguien le interesa. Deshabilita los textbox y combos de un formulario.

Lllamada: ControlesDeshabilitar(Me.Controls)


Private Function DeshabilitarControles(ByRef objColeccion As System.Web.UI.ControlCollection)
Dim frmTextBox As TextBox
Dim frmDropDownList As DropDownList
Dim intN As Integer

For intN = 1 To objColeccion.Count() - 1
If TypeOf (objColeccion.Item(intN)) Is TextBox Then
frmTextBox = objColeccion.Item(intN)
frmTextBox.ReadOnly = True
frmTextBox.BackColor = Color.FromArgb(15724527)

ElseIf TypeOf (objColeccion.Item(intN)) Is DropDownList Then
frmDropDownList = objColeccion.Item(intN)
frmDropDownList.BackColor = Color.FromArgb(15724527)
frmDropDownList.Enabled = False

Else
DeshabilitarControles(objColeccion.Item(intN).Cont rols)

End If

Next

End Function
  #4 (permalink)  
Antiguo 06/10/2004, 05:48
 
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 22
Antigüedad: 20 años
Puntos: 0
te paso la función que he hecho, la paso Me.Controls, siendo me, el formulario actual
Sub DeshabilitarControles(ByVal Controles As Object)
Dim frmControl As Control
For Each frmControl In Controles
frmControl.Enabled = False
Next
End Sub
  #5 (permalink)  
Antiguo 06/10/2004, 07:43
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 8 meses
Puntos: 0
Manolo, no se si andara esta solucion corta.

Da error de compilacion cuando se referencia frmControl.propiedad.
Todos los controles tiene la propiedad readonly o backcolor?
  #6 (permalink)  
Antiguo 06/10/2004, 08:15
 
Fecha de Ingreso: mayo-2004
Ubicación: Madrid
Mensajes: 22
Antigüedad: 20 años
Puntos: 0
Ahora que lo dices, creo que todos los controles tienen backcolor. No sé si puedo decir si falla para otros casos.
  #7 (permalink)  
Antiguo 06/10/2004, 08:41
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Si deseas deshabilitar todos tu controles de ese formulario no sería mas fácil hacer ésto:

Cita:
Me.Enabled = False
Automaticamente todos los elementos se deshabilitarán.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #8 (permalink)  
Antiguo 06/10/2004, 08:48
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 8 meses
Puntos: 0
Solo quiero deshabilitar los textbox y combos, y que queden en gris es para que el usuario intuitivamente sepa que no puede editar.
  #9 (permalink)  
Antiguo 06/10/2004, 10:09
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Entonces te quedaría así:

Cita:
For Each c As Control In Controls
Dim sName As String = c.GetType().Name
If sName = "ComboBox" Then
CType(c, ComboBox).Enabled = False
End If
If sName = "TextBox" Then
CType(c, TextBox).Enabled = False
End If
Next
Por el simple hecho de estar deshabilitados te apareceran en color gris.

Salu2
  #10 (permalink)  
Antiguo 06/10/2004, 13:07
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 8 meses
Puntos: 0
Me parece que con la funcion que hiciste, cuando encuentra un panel, no va a deshabilitar los controles que contiene.

Con deshabilitar no se pone el fondo en gris. El fondo en gris es mas claro para indicar que el campo no es editable.
  #11 (permalink)  
Antiguo 06/10/2004, 15:37
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Solo quiero deshabilitar los textbox y combos


Cita:
cuando encuentra un panel, no va a deshabilitar los controles que contiene.
O eran textbox o panel ?

Cita:
Con deshabilitar no se pone el fondo en gris
QUe extraño, pero si estamos hablando de una windows form cuando está la property enabled en false se ve en color gris pero en fin..

QUe lástima que no te sirvieron mis ejemplos.

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:55.