Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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# 获取用户在文本块中单击的行号?_C#_Xaml_Textblock - Fatal编程技术网

C# 获取用户在文本块中单击的行号?

C# 获取用户在文本块中单击的行号?,c#,xaml,textblock,C#,Xaml,Textblock,当用户单击时,是否可以获取textblock中文本行的行号? 假设用户单击文本块中的第三行,我可以捕获该信息吗 <TextBlock x:Name="WorkspaceVersion" HorizontalAlignment="Left" Margin="879,45,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="703" Width="526" FontFamily="Consolas" FontSize

当用户单击时,是否可以获取textblock中文本行的行号? 假设用户单击文本块中的第三行,我可以捕获该信息吗

<TextBlock x:Name="WorkspaceVersion" HorizontalAlignment="Left" Margin="879,45,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="703" Width="526" FontFamily="Consolas" FontSize="14">
        <TextBlock.Background>
            <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ControlDarkColorKey}}"/>
        </TextBlock.Background>

  // then the handler here
  WorkspaceVersion.MouseLeftButtonDown += new   MouseButtonEventHandler(WorkSpaceVersion_MouseLeftButtonDown);

  // handler
  private void WorkSpaceVersion_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        // can I caputer the line number of a click?
    }

//那么这里的处理程序
WorkspaceVersion.MouseLeftButtonDown+=新的MouseButtonEventHandler(WorkspaceVersion\u MouseLeftButtonDown);
//处理者
私有void工作空间版本\u MouseLeftButtonDown(对象发送器,MouseButtonEventArgs e)
{
//我可以输入点击的行号吗?
}

我也愿意为此使用不同的控件。

好的,所以我通过获取文本块区域内单击的X,Y坐标和Y除以线高度来解决这个问题

private void WorkSpaceVersion_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
   Point position = e.GetPosition(WorkspaceVersion);
   var i = Math.Round(position.Y/15); // line height brah
}

这就是我要回答的:)你可以把e.Source转换成一个文本块,在那里得到行的高度。不需要硬编码线的高度。