繁体   English   中英

如何使用winforms在c#中的richtextbox中获取某行的字体大小

[英]how to get the fontsize of a certain line in a richtextbox in c# using winforms

我有 2 个用于字体和字体大小的组合框。 当我单击它们时,它会更改我的 Richtextbox 中的字体大小或字体。 现在我希望它像在 word 中一样工作。 如果您刚移动到的行的字体或大小不同。 它应该检测到并更改组合框以匹配当前行的字体和大小。 Somoeone 其他人问了同样的问题并得到了对我不起作用的结果。 如下

    private void richTextBox1_SelectionChanged(object sender, EventArgs e)
    {
        MessageBox.Show("we got here"); // this is my added part to let me know if the code is even getting executed. It is not.
        richTextBox1.SelectionStart = 1;
        richTextBox1.SelectionLength = 1;
        comboBox1.Text = richTextBox1.SelectionFont.ToString();
        comboBox2.Text = null;
        comboBox2.Text = richTextBox1.SelectionFont.Size.ToString();

    }

我一直希望这是我的答案,但我看不出在没有选择任何内容时 SelectionFont 会有什么不同。 当我使用向上/向下箭头在文档中移动时,似乎没有调用 richTextBox1_SelectionChanged 事件。 问题不在于组合框,问题在于当我通过我的文档箭头时,我需要能够知道插入符号位置的字体和大小,以便它可以触发事件来更改组合框以匹配。

您使用的代码将始终从索引1处的字符中进行选择,并且长度为1 相反,您需要使用它会为您提供以下代码而不指定选择(因此它将从 ritchTextBox 中获取选择)。

string fontName = richTextBox1.SelectionFont.Name;
float fontsize = richTextBox1.SelectionFont.Size;

您应该将新组合框位置的值临时保存在变量中,否则如果直接执行

comboBox1.SelectedIndex = comboBox1.FindStringExact(richTextBox1.SelectionFont.Name);

将立即调用 comboBox1_SelectedIndexChanged 事件并可能影响结果。

所以试试吧:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
    int comboBox1Index = comboBox1.FindStringExact(richTextBox1.SelectionFont.Name);
    int comboBox2Index = comboBox2.FindStringExact(richTextBox1.SelectionFont.Size.ToString());

    comboBox1.SelectedIndex = comboBox1Index;
    comboBox2.SelectedIndex = comboBox2Index;
}

我改编了 Sujith 的解决方案和 Markus 解决方案的一半,并提出了以下对我来说很好用的方法:

Private Sub Description_SelectionChanged(sender As Object, e As EventArgs) Handles Description.SelectionChanged

    Dim fontName As String = Description.SelectionFont.Name
    Dim fontSize As Single = Description.SelectionFont.Size

    tbSelectFont.Text = fontName
    tbSelectSize.Text = fontSize

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM