no olvidemos que los tacones y maquillajes eran muy usados entre hombres)
¿Que hombre en su sano juicio querría llevar tacones por el motivo que sea?, no lo se, ya me cuesta mucho aceptar que la mujer los quiera llevar por un estúpido canon de belleza y atracción sexual, pero también hay que mencionar las pinturas de guerra y las faldas escocesas que siguen llevando los hombres .
Por desgracia todos somos conscientes de que vivimos en una putrefacta sociedad materialista donde importa más los productos de belleza que te heches en la cara que el interior de la persona, si un tio lleva tatuajes es un malote, si una mujer lleva tatuajes es una golfa, si un hombre lleva falda es maricón y si una mujer no quiere llevar tacones no es mujer, y si no se depila ya ni te cuento, ¡que cerda!.
Especifica el tipo de excepción, y el mensaje exacto de error.
Comprueba el valor de la propiedad dt.Rows.IsReadonly y del rgv.Rows.IsReadOnly antes de iterar la colección, ¿alguno es True? .
En caso afirmativo, no se por que te sucede eso, pero para intentar solucionarlo no intentes eliminar las filas del rgv, declara el dt fuera de método y modifica el rgv.DataSource (es decir, elimina las filas directamente en el dt), los cambios se verán reflejados en el rgv.
Prueba así:
Código
Dim dt As DataTable
Dim dtCopy As DataTable
PrivateSub test()
dt =New DataTable
' añadir columnas, añadir filas...
dtCopy = dt.Copy()
rgv.DataSource= dtCopy.DefaultView
EndSub
PrivateSub RadButton1_Click(sender AsObject, e As EventArgs) _
Handles RadButton1.Click
If dtCopy.Rows.IsReadOnly()Then
ThrowNew Exception("dtCopy row col es de solo lectura")
ElseIf rgv.Rows.IsReadOnlyThen
ThrowNew Exception("rgv row col es de solo lectura")
Else
Using rgv.DeferRefresh()
ForEach row As GridViewRowInfo In rgv.SelectedRows.ToArray
El primer problema es que estás intentando modificar una secuencia paralela, que al asignarla cómo datasource es de solo lectura.
Citar
Código
...
rgv.DataSource= dt.DefaultView.AsParallel();
...
Y el segundo problema es que estás intentando modificar dos colecciones que están sincronizadas entre sí (RadGridView.Rows <> RadGridView.SelectedRows):
Citar
Código
...
foreach(GridViewRowInfo row in rgv.SelectedRows)
...
Solución al primer problema es no usar el paralelismo ya que tienes pensado modificar la colección.
Código
...
rgv.DataSource= dt.DefaultView
...
Solución al segundo problema es desactivar las notificaciones del control/colecciones.
Código
using(RadGridView1.DeferRefresh())
{
foreach(GridViewRowInfo row in RadGridView1.SelectedRows){
RadGridView1.Rows.Remove(row);
}
}// El método RadGridView.DeferRefresh() internamente es lo mismo que utilizar RadGridView.BeginUpdate() + RadGridView.EndUpdate(), pero de un modo elegante.
Para obtener el directorio actual debo de hacerlo desde el form o obtengo error, entonces, lo que hago es...
Detente ahí en el "entonces, lo que hago es...", no intentes parchear el problema, trata de solucionar el problema principal, explica cual es el tipo de excepción que te lanza, y el mensaje de error, Lo mismo para la otra linea que has comentado, "no me deja" no aclara el problema que tienes, da DETALLES.
Cómo alternativa puedes intentar utilizar la propiedad Application.StartupPath, aunque esta devuelve el directorio de inicio de la aplicación en lugar del directorio de trabajo actual (que viene siendo lo mismo a menos que cambias arbitrariamente el directorio de trabajo).
eligiendo la segunda opción (la de eliminar columnas y renombrar las autogeneradas) lo pude solucionar ahora kise probar la primer solución q m dist solo x curiosidad y no lo puedo hacer:
Si te funciona la opción alternativa que te mostré entonces no te agobies y hazlo así, por lo que yo veo en el código que has mostrado debería funcionar por que estás siguiendo el ejemplo funcional que te mostré, pero tampoco soy un gurú de Telerik, si quieres resolver el problema deberías consultarlo en su foro de soporte (si cumples las condiciones para que te den soporte)
Descripción Esta aplicación es una simple falsificación (fake) del cliente de Steam correspondiente a la versión 2.70.82.9, el desarrollo de esta aplicación ha sido con fines educativos, con el objetivo de demostrar cómo se puede elaborar un engaño de este tipo para simular la ejecución de una aplicación legítima y así obtener datos personales (el usuario y la contraseña de Steam), queda bajo su responsabilidad el uso que le vaya a dar a este programa.
Por fuera el usuario solo verá una aplicación que consta de 3 Forms con un par de botones y poco más, pero lo cierto es que he invertido bastante esfuerzo para conseguir elaborar una buena "mímica" (o al menos considero que es buena), hay una gran labor detrás ...en el código fuente, y con mucho código rehutilizable que les puede servir para proyectos relacionados.
Características
Soporte multi idioma, soportando un total de 22 de los 26 idiomas del cliente original de Steam. Los idiomas no soportados son Koreano, Japonés, Chino tradicional y Chino simplificado
Auto-detección de idioma. Por defecto se detectará el idioma del cliente steam instalado en el PC, si el cliente no está instalado se intentará utilizar el idioma del SO, si esto falla también, se utilizará el Inglés.
Simulación elaborada de varias características del cliente original de Steam, así cómo de los efectos de iluminación de los controles de la interfáz original.
Almacenamiento de usuario/contraseña en archivo local.
Envio de usuario/contraseña mediante SMTP.
Envio de usuario/contraseña mediante FTP.
En resumen he intentado cuidar todos los detalles posibles, aunque no soy perfecto, claro está.
Imágenes (de la interfáz en inglés)
Demostración y comparación de similitud
Configuración Para configurar el programa hay que compilar el código fuente, dentro del código fuente encontrarán la carpeta/namespace Config que contiene todos los valores configurables del programa:
IMPOTANTE: Compilar la solución en modo Release, en el modo Release suprimo las excepciones controladas, aparte, el modo Debug tiene un comportamiento distinto y se muestran controles adicionales para testear el la iluminación de los botones:
Todos esos "trucos" los puedes encontrar facilmente en infinidad de páginas en toda la red, basicamente en general casi todos consisten en reducir o deshabilitar características de Windows, cómo por ejemplo reducir los efectos visuales cómo te han comentado, o desactivar servicios innecesarios, desactivar extensiones innecesarias de la shell, alterar valores del específicos del sistema para optimizaciones del SO y/o del disco duro, una limpieza de basura y defragmentación, etc, etc, etc.