Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF文本块单击事件_C#_Wpf_Grid_Visual Studio 2012_.net 4.5 - Fatal编程技术网

C# WPF文本块单击事件

C# WPF文本块单击事件,c#,wpf,grid,visual-studio-2012,.net-4.5,C#,Wpf,Grid,Visual Studio 2012,.net 4.5,我已经在wpf应用程序的网格中创建了文本块。我知道如何创建单击事件。但我不知道如何从那个单元格中获取属性。我想要的属性是Grid.Row和Grid.Column。我该怎么做 <Window x:Class="TicTacToe.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/w

我已经在wpf应用程序的网格中创建了文本块。我知道如何创建单击事件。但我不知道如何从那个单元格中获取属性。我想要的属性是Grid.Row和Grid.Column。我该怎么做

<Window x:Class="TicTacToe.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Tic-Tac-Toe" Height="356" Width="475">
    <Grid VerticalAlignment="Top" ShowGridLines="True" Height="313" Margin="10,10,2,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" Text="o" TextAlignment="Center" FontSize="72" FontFamily="Lucida Bright" FontWeight="Bold"></TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="1" MouseLeftButtonDown="ChoosePosition" ></TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="2" ></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0" ></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="1" ></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="2" ></TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="0" ></TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="1" ></TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="2" ></TextBlock>

    </Grid>

</Window>

 private void ChoosePosition(object sender, MouseButtonEventArgs e)
        {
        }

private void ChoosePosition(对象发送器,鼠标按钮ventargs e)
{
}

您是否检查了
发送方
参数?这将为您提供对textbox对象的引用,这可能是您所需要的全部,具体取决于您尝试执行的操作。

由于Grid.Row和Grid.Column是Grid类的附加属性,您可以使用以下语法获取它们:

int row = Grid.GetRow(myTextBox);
int column = Grid.GetColumn(myTextBox);
在您的情况下,可以在Click处理程序中强制转换sender参数,因此如下所示:

var myTextBox = sender as TextBox;
if(myTextBox != null) {
   int row = Grid.GetRow(myTextBox);
   int column = Grid.GetColumn(myTextBox);
}

只需将TextBox更改为TextBlock

您必须将TextBlock放在网格中的列/行中