none
Detectar el Click en una grilla de WPF RRS feed

  • Pregunta

  • Hola a todos,

    Estoy haciendo una aplicación en Wpf con C# que se compone de una grilla de nxn y si el usuario da doble clik en una celda esta cambia de color.

    Para generar la grilla lo hago de la siguiente manera:

    1) En el MainWindow.xaml defino,

    <UniformGrid x:Name="Grilla" Width="514" Height="345" VerticalAlignment="Center" HorizontalAlignment="Center"> </UniformGrid>

    2) Dentro del MainWindow.xaml.cs defino,

    Grilla.Rows = Convert.ToInt32(nudFilas.Value);
                Grilla.Columns = Convert.ToInt32(nudColumnas.Value);
                
                for (int i = 1; i <= (Convert.ToInt32(nudFilas.Value) * Convert.ToInt32(nudColumnas.Value)); i++)
                {
                    Grilla.Children.Add( new Rectangle{StrokeThickness=1, Stroke=Brushes.Black,Fill=Brushes.GreenYellow});
                }

    3) Este es el resultado,

    Grilla

    Ahora su el usuario da click en una celda la debo cambiar de color pero no logro saber como hacer para identificar el evento y la celda implicada.

    Muchas gracias.


    Cristhian Angarita

    viernes, 13 de abril de 2012 0:25

Respuestas

  • Hola

    Intenta de esta forma:

    void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement fm = e.OriginalSource as FrameworkElement;
        if (fm is Rectangle)
        {
            Rectangle r = (Rectangle)fm;
            r.Fill = Brushes.Red;
        }
    }

    Un saludo


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog

    viernes, 13 de abril de 2012 2:38

Todas las respuestas

  • Bueno ya tengo una parte y es la de detectar el doble click

    public MainWindow()
            {
                InitializeComponent();
                MouseDoubleClick += new MouseButtonEventHandler(MainWindow_MouseDoubleClick);
            }

    con

    void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
            {
                MessageBox.Show("Hola mundo...." );
            }

    Ahora estoy intentando saber el control sobre el que se ha realizado doble Click

    Encontré algo pero la propiedad Name sale vacía.

    void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
            {
                FrameworkElement fm = e.Source as FrameworkElement;
                MessageBox.Show("Hola mundo...." + fm.Name );
            }



    Cristhian Angarita

    viernes, 13 de abril de 2012 2:02
  • Hola

    Intenta de esta forma:

    void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement fm = e.OriginalSource as FrameworkElement;
        if (fm is Rectangle)
        {
            Rectangle r = (Rectangle)fm;
            r.Fill = Brushes.Red;
        }
    }

    Un saludo


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog

    viernes, 13 de abril de 2012 2:38
  • Muchas gracias Antonio eso era.


    Cristhian Angarita

    viernes, 13 de abril de 2012 11:19