如何识别WPF网格上点击哪个单元格? [英] Ways to identify which cell was clicked on WPF Grid?
本文介绍了如何识别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屋!
查看全文