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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  abrir desde la fila de un Datagridview
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: abrir desde la fila de un Datagridview  (Leído 3,311 veces)
irvincnt93

Desconectado Desconectado

Mensajes: 14


Ver Perfil
abrir desde la fila de un Datagridview
« en: 8 Febrero 2015, 00:17 am »

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 Desconectado

Mensajes: 9.788



Ver Perfil
Re: abrir desde la fila de un Datagridview
« Respuesta #1 en: 8 Febrero 2015, 09:30 am »

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
Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load() Handles MyBase.Load
  4.  
  5.        With Me.DataGridView1
  6.            .SelectionMode = DataGridViewSelectionMode.CellSelect
  7.            .MultiSelect = False
  8.            .Columns.Add("colImage", "Columna de Imagen")
  9.            .Columns.Add("colInfo1", "Columna adicional 1")
  10.            .Columns.Add("colInfo2", "Columna adicional 2")
  11.            .Rows.Add({"C:\Imagen.jpg", "Info adicional 1", "Info adicional 2"})
  12.        End With
  13.  
  14.    End Sub
  15.  
  16.    Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _
  17.    Handles DataGridView1.CellDoubleClick
  18.  
  19.        Dim value As String = DirectCast(sender, DataGridView).Rows(e.RowIndex).Cells(0).Value.ToString
  20.  
  21.        If Not String.IsNullOrEmpty(value) AndAlso IO.File.Exists(value) Then
  22.            Try
  23.                Process.Start(value)
  24.  
  25.            Catch ex As Exception
  26.                Throw
  27.  
  28.            End Try
  29.        Else
  30.            ' ...
  31.  
  32.        End If
  33.  
  34.    End Sub
  35.  
  36. End Class

C#
Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7. public class Form1
  8. {
  9.  
  10. private void Form1_Load()
  11. {
  12. var _with1 = this.DataGridView1;
  13. _with1.SelectionMode = DataGridViewSelectionMode.CellSelect;
  14. _with1.MultiSelect = false;
  15. _with1.Columns.Add("colImage", "Columna de Imagen");
  16. _with1.Columns.Add("colInfo1", "Columna adicional 1");
  17. _with1.Columns.Add("colInfo2", "Columna adicional 2");
  18. _with1.Rows.Add({
  19. "C:\\Imagen.jpg",
  20. "Info adicional 1",
  21. "Info adicional 2"
  22. });
  23. }
  24.  
  25. private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
  26. {
  27. string value = ((DataGridView)sender).Rows(e.RowIndex).Cells(0).Value.ToString;
  28.  
  29. if (!string.IsNullOrEmpty(value) && IO.File.Exists(value)) {
  30. try {
  31. Process.Start(value);
  32. } catch (Exception ex) {
  33. throw;
  34. }
  35. } else {
  36. // ...
  37. }
  38. }
  39.  
  40. public Form1()
  41. {
  42. Load += Form1_Load;
  43. }
  44.  
  45. }
  46.  
  47. //=======================================================
  48. //Service provided by Telerik (www.telerik.com)
  49. //=======================================================


« Última modificación: 8 Febrero 2015, 09:47 am por Eleкtro » En línea

irvincnt93

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: abrir desde la fila de un Datagridview
« Respuesta #2 en: 8 Febrero 2015, 11:59 am »

hola amigo.. si creo que si me entendiste.. tengo una duda bro... primero te paso mi código..
Código
  1.  
  2. private void Form2_Load(object sender, EventArgs e)
  3.        {
  4.            conexion.ConnectionString = @"Data Source=IRVIN-PC;Initial Catalog=imagenes;Integrated Security=True";
  5.            SqlDataReader dr;
  6.            comandos.Connection = conexion;
  7.            comandos.CommandText = "SELECT periodo,departamento,materia,profesor,grupo,direccion FROM actasPath";
  8.            comandos.CommandType = CommandType.Text;
  9.            conexion.Open();
  10.            dataGridView1.Rows.Clear();
  11.  
  12.            dr = comandos.ExecuteReader();
  13.  
  14.            while (dr.Read())
  15.            {
  16.                int renglon = dataGridView1.Rows.Add();
  17.  
  18.                dataGridView1.Rows[renglon].Cells["periodos"].Value = dr.GetString(dr.GetOrdinal("periodo")).ToString();
  19.                dataGridView1.Rows[renglon].Cells["dpto"].Value = dr.GetString(dr.GetOrdinal("departamento")).ToString();
  20.                dataGridView1.Rows[renglon].Cells["materias"].Value = dr.GetString(dr.GetOrdinal("materia")).ToString();
  21.                dataGridView1.Rows[renglon].Cells["profesores"].Value = dr.GetString(dr.GetOrdinal("profesor")).ToString();
  22.                dataGridView1.Rows[renglon].Cells["grupos"].Value = dr.GetString(dr.GetOrdinal("grupo")).ToString();
  23.                dataGridView1.Rows[renglon].Cells["path"].Value = dr.GetString(dr.GetOrdinal("direccion")).ToString();
  24.            }
  25.            conexion.Close();
  26.        }
  27.        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
  28.        {
  29.            string valor = ((DataGridView)sender).Rows(e.RowIndex).Cell(0).Value.ToString;
  30.  
  31.            if(!String.IsNullOrEmpty(valor) && IO.File.Exists(valor)){
  32.                try
  33.                {
  34.                    Process.Start(valor);
  35.                }
  36.                catch (Exception ex)
  37.                {
  38.                    throw;
  39.                }  
  40.            }
  41.            else
  42.            {
  43.  
  44.            }
  45.        }
  46.  
  47.  
  48.  
  49.  


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 Desconectado

Mensajes: 9.788



Ver Perfil
Re: abrir desde la fila de un Datagridview
« Respuesta #3 en: 11 Febrero 2015, 15:28 pm »

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.
Código
  1. Using System.IO; // File
  2. Using System.Diagnostics; // Process
  3. 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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines