Autor
|
Tema: abrir desde la fila de un Datagridview (Leído 3,340 veces)
|
irvincnt93
Desconectado
Mensajes: 14
|
hola comunidad, acudo una ves mas en su ayuda. tengo un datagridview en c# ya lleno con los campos que selecciono en mi consulta, dentro de una celda tengo la dirección (path) de una imagen que también guarde y que ahora se me muestra en el datagritview, lo que quiero hacer es que al momento que le de clic en alguna parte de la fila de la imagen que quiero abrir me la abra.
e buscado en algunos foros y leo que process.star me sirve para ello, pero como le hago?
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
Si no he entendido mal, tienes un DataGridView con modo de selección por celda (no por fila), utilizas una columna para mostrar la ruta de una imagen?, y quieres que al seleccionar una celda (haciendo doble-click) se abra la imagen de la columna asociada a esa fila, entonces: Suscríbete al evento CellDubleclick y utiliza la información del evento (event-data) para localizar la columna y por ende la ruta de la imagen. Seguramente no tengas el grid estructurado de esta manera, pero es solo un ejemplo: VB.Net Public Class Form1 Private Sub Form1_Load() Handles MyBase.Load With Me.DataGridView1 .SelectionMode = DataGridViewSelectionMode.CellSelect .MultiSelect = False .Columns.Add("colImage", "Columna de Imagen") .Columns.Add("colInfo1", "Columna adicional 1") .Columns.Add("colInfo2", "Columna adicional 2") .Rows.Add({"C:\Imagen.jpg", "Info adicional 1", "Info adicional 2"}) End With End Sub Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _ Handles DataGridView1.CellDoubleClick Dim value As String = DirectCast(sender, DataGridView).Rows(e.RowIndex).Cells(0).Value.ToString If Not String. IsNullOrEmpty(value ) AndAlso IO. File. Exists(value ) Then Try Process.Start(value) Catch ex As Exception Throw End Try Else ' ... End If End Sub End Class
C# using Microsoft.VisualBasic; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; public class Form1 { private void Form1_Load() { var _with1 = this.DataGridView1; _with1.SelectionMode = DataGridViewSelectionMode.CellSelect; _with1.MultiSelect = false; _with1.Columns.Add("colImage", "Columna de Imagen"); _with1.Columns.Add("colInfo1", "Columna adicional 1"); _with1.Columns.Add("colInfo2", "Columna adicional 2"); _with1.Rows.Add({ "C:\\Imagen.jpg", "Info adicional 1", "Info adicional 2" }); } private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { string value = ((DataGridView)sender).Rows(e.RowIndex).Cells(0).Value.ToString; if (!string.IsNullOrEmpty(value) && IO.File.Exists(value)) { try { Process.Start(value); } catch (Exception ex) { throw; } } else { // ... } } public Form1() { Load += Form1_Load; } } //======================================================= //Service provided by Telerik (www.telerik.com) //=======================================================
|
|
« Última modificación: 8 Febrero 2015, 09:47 am por Eleкtro »
|
En línea
|
|
|
|
irvincnt93
Desconectado
Mensajes: 14
|
hola amigo.. si creo que si me entendiste.. tengo una duda bro... primero te paso mi código.. private void Form2_Load(object sender, EventArgs e) { conexion.ConnectionString = @"Data Source=IRVIN-PC;Initial Catalog=imagenes;Integrated Security=True"; SqlDataReader dr; comandos.Connection = conexion; comandos.CommandText = "SELECT periodo,departamento,materia,profesor,grupo,direccion FROM actasPath"; comandos.CommandType = CommandType.Text; conexion.Open(); dataGridView1.Rows.Clear(); dr = comandos.ExecuteReader(); while (dr.Read()) { int renglon = dataGridView1.Rows.Add(); dataGridView1.Rows[renglon].Cells["periodos"].Value = dr.GetString(dr.GetOrdinal("periodo")).ToString(); dataGridView1.Rows[renglon].Cells["dpto"].Value = dr.GetString(dr.GetOrdinal("departamento")).ToString(); dataGridView1.Rows[renglon].Cells["materias"].Value = dr.GetString(dr.GetOrdinal("materia")).ToString(); dataGridView1.Rows[renglon].Cells["profesores"].Value = dr.GetString(dr.GetOrdinal("profesor")).ToString(); dataGridView1.Rows[renglon].Cells["grupos"].Value = dr.GetString(dr.GetOrdinal("grupo")).ToString(); dataGridView1.Rows[renglon].Cells["path"].Value = dr.GetString(dr.GetOrdinal("direccion")).ToString(); } conexion.Close(); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { string valor = ((DataGridView)sender).Rows(e.RowIndex).Cell(0).Value.ToString; if(!String.IsNullOrEmpty(valor) && IO.File.Exists(valor)){ try { Process.Start(valor); } catch (Exception ex) { throw; } } else { } }
mi este es lo que tengo hermano, en tu código veo que en la parte de arriba del evento CellContentClick tienes un código que supongo yo es para llenar el datagridview (aun que lo estoy dudando, creo que es parde del codigo para que lo de abajo me funcione correctamente), el mio lo puse de esa manera. las tres palabras que subraye dentro del evento CellContentClick me marcan error bro, porfa ayudame
|
|
« Última modificación: 11 Febrero 2015, 15:21 pm por Eleкtro »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
en tu código veo que en la parte de arriba del evento CellContentClick tienes un código que supongo yo es para llenar el datagridview (aun que lo estoy dudando, creo que es parde del codigo para que lo de abajo me funcione correctamente) No te preocupes, era un simple relleno del DataGridView para mostrarte un código funcional. las tres palabras que subraye dentro del evento CellContentClick me marcan error bro, porfa ayudame Debes seguir las normas del foro para utilizar las etiquetas al insertar código. Puedes utilizar los parámetros de las etiquetas para resaltar lineas del código como puedes ver en tu comentario que he editado arriba, o puedes especificar exactamente los nombres. Dicho esto, si el compiler te está indicando un error y además te está mostrando la causa del error y la información adicional sobre el mismo, ¿porque no muestras la información sobre el error?, no soy adivino. De todas formas, por los nombres que subrayaste, deduzco que seguramente los errores sean porque no hayas importado los namespaces necesarios. Using System.IO; // File Using System.Diagnostics; // Process Using System.Windows.Forms; // DataGridView.Rows
...Pero es que como ya he explicado puedes comprobar la causa de esos errores sin necesidad de ayuda, muestra la info del error si necesitas ayuda para solucionarlos en caso de que el error no sea por la ausencia de los namespaces. Saludos!
|
|
« Última modificación: 11 Febrero 2015, 15:35 pm por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Fila fija en DataGridView
.NET (C#, VB.NET, ASP)
|
elmaro
|
8
|
14,034
|
20 Agosto 2009, 17:09 pm
por Hadess_inf
|
|
|
Quitar la celda sobrante al tener una sola fila en datagridview
.NET (C#, VB.NET, ASP)
|
Zeroql
|
2
|
2,812
|
16 Febrero 2012, 17:37 pm
por Zeroql
|
|
|
Abrir un datagridview dentro de otro parecido al TREEVIEW
Programación General
|
javb2018
|
0
|
1,994
|
4 Mayo 2013, 17:56 pm
por javb2018
|
|
|
Seleccionar fila DatagridView VB.NET[SOLUCIONADO]
.NET (C#, VB.NET, ASP)
|
Yaldabaot
|
5
|
18,483
|
23 Mayo 2013, 21:26 pm
por XresH
|
|
|
(Ayuda) Sumar elementos de fila o columna impar en DataGridView (VisualBasic)
« 1 2 »
.NET (C#, VB.NET, ASP)
|
MikeSky
|
10
|
10,541
|
15 Diciembre 2014, 16:14 pm
por Eleкtro
|
|