如何识别WPF网格上点击哪个单元格? [英] Ways to identify which cell was clicked on WPF Grid?

查看:104
本文介绍了如何识别WPF网格上点击哪个单元格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个3x3矩阵网格。如果一个用户在特定的单元格上,我怎样才能识别单元格后的单元格?



请指教。感谢
PJ

解决方案

假设您正在设计一个tic-tac-toe风格的游戏,并且所讨论的网格是标准的WPF Grid,我想你最好在每个单独的单元格中放置一个控件。这样,您可以将鼠标事件挂接到每个鼠标事件上,如下所示:

 < Window x:Class =WpfApplication1.Window1 
xmlns =http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x =http://schemas.microsoft.com/winfx/2006/xaml
Title =Window1Height =300Width =300>
< Grid ShowGridLines =True>
< Grid.ColumnDefinitions>
< ColumnDefinition />
< ColumnDefinition />
< ColumnDefinition />
< /Grid.ColumnDefinitions>
< Grid.RowDefinitions>
< RowDefinition />
< RowDefinition />
< RowDefinition />
< /Grid.RowDefinitions>

< Button Grid.Column =0Grid.Row =0Click =ButtonClick/>
< Button Grid.Column =1Grid.Row =0Click =ButtonClick/>
< Button Grid.Column =2Grid.Row =0Click =ButtonClick/>

< Button Grid.Column =0Grid.Row =1Click =ButtonClick/>
< Button Grid.Column =1Grid.Row =1Click =ButtonClick/>
< Button Grid.Column =2Grid.Row =1Click =ButtonClick/>

< Button Grid.Column =0Grid.Row =2Click =ButtonClick/>
< Button Grid.Column =1Grid.Row =2Click =ButtonClick/>
< Button Grid.Column =2Grid.Row =2Click =ButtonClick/>

< / Grid>
< / Window>

而在您的代码隐藏中:



<$私人无效ButtonClick(对象发件人,RoutedEventArgs e)
{
按钮_btn =发件人为按钮;

int _row =(int)_btn.GetValue(Grid.RowProperty);
int _column =(int)_btn.GetValue(Grid.ColumnProperty);
MessageBox.Show(string.Format(点击列{0},行{1},_column,_row));
}


I have a 3x3 matrix grid. If a user on particular cell, how can I identify the cell cordinates after click?

Please advise. thanks PJ

解决方案

Assuming you're designing a tic-tac-toe style game, and the grid in question is the standard WPF Grid, I'd imagine you'd be best putting a control in each separate cell. That way you can hook into mouse events for each, like so:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <Button Grid.Column="0" Grid.Row="0" Click="ButtonClick" />
        <Button Grid.Column="1" Grid.Row="0" Click="ButtonClick" />
        <Button Grid.Column="2" Grid.Row="0" Click="ButtonClick" />

        <Button Grid.Column="0" Grid.Row="1" Click="ButtonClick" />
        <Button Grid.Column="1" Grid.Row="1" Click="ButtonClick" />
        <Button Grid.Column="2" Grid.Row="1" Click="ButtonClick" />

        <Button Grid.Column="0" Grid.Row="2" Click="ButtonClick" />
        <Button Grid.Column="1" Grid.Row="2" Click="ButtonClick" />
        <Button Grid.Column="2" Grid.Row="2" Click="ButtonClick" />

    </Grid>
</Window>

And in your code-behind:

private void ButtonClick(object sender, RoutedEventArgs e)
{
    Button _btn = sender as Button;

    int _row = (int)_btn.GetValue(Grid.RowProperty);
    int _column = (int)_btn.GetValue(Grid.ColumnProperty);
    MessageBox.Show(string.Format("Button clicked at column {0}, row {1}", _column, _row));
}

这篇关于如何识别WPF网格上点击哪个单元格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆