POST EDITADO AL FINAL:Buenas.
Pues he vuelto después de unos días desaparecido, pero he estado con mi novia y aprovechando un poquito el fin de semanita...que ya queda poco para la vuelta a la rutina
.
Ante todo, gracias por las respuestas que habéis dejado.
Yo también estoy de acuerdo en que debería de haber un subforo de programación...la verdad es que SIEMPRE lo he visto necesario, pues aquí estamos bastantes programadores, tanto de profesión como de hobby, y bueno, es mejor tenerlo todo organizado cada cosa en su sitio.
Aquí os dejo el proyecto de aprendizaje que estoy haciendo poquito a poquito para ir aprendiendo c#.
La verdad es que, conforme más voy "mejorando" y tal, cada vez lo veo más claro y útil con respecto a vb.net, que tampoco difiere mucho, la verdad...pero hay alguna cosita que aún no me va quedando clara (chorradas y demás, seguro).
De momento he logrado conectar con una BBDD en SQLServer, y hacer las típicas operaciones (consultas, inserciones, etc...), y poquito a poquito voy haciendo más cositas.
Os explico un poco el "proyecto" (por llamarlo de alguna forma).
He hecho un formulario principal, que es el que contiene el menustrip con los menús a los distintos formularios ("ejercicios") que estoy realizando.
El primero de ellos es el de inserción en una base de datos (que posteriormente lo re-utilizo para editar los mismos registros a través de un datagrid) en este, de momento no tengo ninguna duda.
El segundo es un datagrid que carga a través de código (no he usado ningún origen de datos puesto que quiero realizar más adelante otras cosas con él) una serie de registros de una base de datos que está adjunta en el proyecto.
La idea es que en el primer formulario (el de inserción de datos), insertes un nombre, apellidos, y un DNI, y en el segundo, te carge en el datagrid dichos datos, además de permitirte modificarlos haciendo un doble click sobre una fila de éste datagrid (lo que hace es volver a llamar al formulario de inserción de datos, pero a través del constructor modifica ciertas cosas y lo convierte en utilizable para la edición de éstos).
No tene mucho sentido, pero prefiero ir haciendo las cosas poco a poco y de forma separada, para luego unirlos en un solo formulario como "ejemplo final".
La duda que me surge es ésta:
- Hacemos doble click en una fila de datos del datagrid.
- Se nos abre el formulario de edición de registros.
- Modificamos cualquier dato de dicho registro.
-- ¿Cómo puedo hacer que, una vez has editado los datos, se cambie una variable en el formulario del datagrid?
Si modificamos un registro, el datagrid vuelve a cargar los datos de la base de datos, y mi idea es, que además se SELECCIONE en el datagrid la fila que hemos editado a través del formulario de edicion/inserción de datos. Para ello tengo una variable que sería sDNIEditado (en el archivo frmDDBBDataGrid.cs), que tendría que ser modificada desde frmBBDDRegistros.cs, y a través del siguiente bloque de código (que se encuentra en frmDDBBDataGrid.cs), seleccionar la fila editada:
//Comprobamos si el usuario ha editado el registro a través del resultado del diálogo...
if (drResultado != DialogResult.Cancel) {
//En este caso, deberemos de volver a cargar los registro del DataGrid...
CargarRegistros_DataGrid();
//Sería interesante, que se seleccionara automáticamente la fila que hemos editado...
}
Pero la cosa es que, desde frmDDBBRegistros.cs, no me permite acceder a las variables del formulario frmDDBBDataGrid...
¿Alguien me echa un cable? También estaría interesado en alguna mejora/optimización/crítica del código que he aportado...cuando haya logrado hacer esto, fusionaré los dos formularios en uno...y además intentaré crear una clase que gestione todo lo relacionado con el acceso/manipulacion de la base de datos...
Muchas gracias por todo.
P.D.: Aquí esta la dirección de la descarga:
http://www.megaupload.com/?d=8WXM9TOVEDICIÓN 2:Pues me ha surgido otra duda.
Vereis, he creado un procedimiento encargado de gestionar el control de las barras de herramientas del toolstripmenu, en el que, según el valor de la propiedad TAG del sender y un switch, llama a un procedimiento u otro...
EDITO3:Ya he encontrado la solución a la duda #2 en una página inglesa con códigos de c#. Por fin...menuda tontería...sabía yo que tenía que ser algo así...
//Obtenemos el nombre del botón pulsado...
string sOpcion = ((ToolStripButton)sender).Tag.ToString();
Poquito a poquito voy aprendiendo...jejeje, nada como uno mismo para sacarse las castañas del fuego...aunque aún sigo liado con la primera duda...a ver si algún alma caritativa...
Este es el código:
//Procedimiento encargado de gestionar el control de la barra de herramientas...
private void Control_BarraHerramientas(object sender, EventArgs e)
{
//switch Convert.ToString(((ToolStripButton)sender.tag) {
switch (sender.Tag) {
//switch (Convert.ChangeType(sender, typeof(ToolStripButton)).Tag) {
case "Nuevo":
Insertar_Registro();
break;
case "Editar":
Editar_Registro();
break;
case "Borrar":
Eliminar_Registro();
break;
}
}
Este procedimiento está asociado al evento Click de los distintos toolstripbutton's de la barra de herramientas (vamos, que todos los toolstripbuttons comparten el mismo procedimiento para el evento Click)...el problema está en que el compilador me dice que "Error 1 'object' no contiene una definición para 'Tag'".
En VB.net, aunque no estuviera esa propiedad disponible, sí que lo tragaba el compilador, o directamente hacía un CTye(sender, ToolStripButton).Tag, y problema resuelto, pero en C# parece que no se traga ningún tipo de conversión o casting, y directamente el sender.tag me manda a chuparla...
La verdad que he estado buscando y no entiendo el porqué me da problemas...como vereis tengo también comentadas las conversiones, y nada...nada se lo traga...
Como ya dicho, los eventos están bien asignados, los tag's también, y a priori...yo no veo ningún fallo...
¿Alguien me da alguna solución o pista? he estado buscando bastante en internet y no lo he visto...
Un saludo de nuevo, y muchas gracias por todo.
P.D.: La duda #1 sigo también sin poderla resolver...