C# 获取用户在文本块中单击的行号?
当用户单击时,是否可以获取textblock中文本行的行号? 假设用户单击文本块中的第三行,我可以捕获该信息吗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 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转换成一个文本块,在那里得到行的高度。不需要硬编码线的高度。