VB 2010将富文本添加到richtextbox

时间:2014-04-26 18:43:14

标签: vb.net

使用VB 2010 Express。我有一个richtextbox控件rtxbxResult,我想用上标添加文本 - 我有数字a,b和c,并希望有一个^ 2 + b ^ 2 = c ^ 2,即2 ^ 2 + 3 ^ 2 = 4 ^ 2(显然有2个上标)。我对richtextbox .Text,.SelectedText,.Rtf以及它们如何工作感到困惑。

我可以使用

向控件添加文本
rtxbxResult.Text &= intA & "^2 " & intB & "^2 = " & intC & "^2" & vbCrLf"

我尝试使用.SelectionCharOffset和.SelectedText,但它没有给我一个偏移量:

rtxbxResult.SelectionStart = rtxbxResult.TextLength
rtxbxResult.SelectedText = String.Format("{0,6:#,#}", lngA)
rtxbxResult.SelectionCharOffset = 1000
rtxbxResult.SelectedText = "3"
rtxbxResult.SelectionCharOffset = 0
rtxbxResult.SelectedText = " + "
rtxbxResult.SelectedText = String.Format("{0,6:#,#}", lngB)
rtxbxResult.SelectionCharOffset = -50
rtxbxResult.SelectedText = "3"
rtxbxResult.SelectionCharOffset = 0
rtxbxResult.SelectedText = " + "
rtxbxResult.SelectedText = String.Format("{0,6:#,#}", lngC)
rtxbxResult.SelectionCharOffset = 50
rtxbxResult.SelectedText = "3"
rtxbxResult.SelectionCharOffset = 0
rtxbxResult.SelectedText = " = "
rtxbxResult.SelectedText = String.Format("{0,6:#,#}", lngD)
rtxbxResult.SelectionCharOffset = 50
rtxbxResult.SelectedText = "3"
rtxbxResult.SelectionCharOffset = 0
rtxbxResult.SelectedText = " = "
rtxbxResult.SelectedText = String.Format("{0,12:#,#}", lngD3) & vbCrLf

所有3只打印在结果旁边,而不是上标或下标。 看RTF代码让我更加困惑,因为他们使用.RTF属性。如果我使用以下代码:

Private Sub btnTestRTF_Click(sender As System.Object, e As System.EventArgs) Handles btnTestRTF.Click
    rtxbxResult.Clear()
    rtxbxResult.Rtf = "{\rtf1 This is how to enter VB{\sub net} with net subscripted.\par}"
    rtxbxResult.Rtf &= "{\rtf1 How{\sub about this?}\par}" & ControlChars.Cr
End Sub

我得到了第一行,但第二行根本没有出现。如果我将第二行更改为.rtf =它会覆盖第一行。如果我逐步调试,文本甚至不会出现在文本框中,直到我退出子例程,而不是每行执行。我不确定.Rtf属性的设置以及它如何转换为richtextbox中的可见文本。 .Text属性和.Rtf属性之间有什么区别?如何将富文本添加到框中已有的文本中?

1 个答案:

答案 0 :(得分:0)

您需要使用\super在RTF文档中插入上标,如下所述:

链接文章中的相关部分 - 从C#翻译:

' Now lets insert \super
selectedRtf = selectedRtf.Insert(selectedRtf.IndexOf(selectedText), "\super")

' Now set the Rtf back to the control
richTextBox1.SelectedRtf = selectedRtf