我试图在文本框中加粗某些行,而不是所有输出。而且我还试图在文本框的最右边填充几行,而不是所有行,以使其看起来更清晰。
我正在尝试加粗所有(txtBoxCourse
文本框)并尝试将所有(txtBoxGrades
文本框)缩进到右侧。
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
Dim semester, Newline As String
Dim totalGPA As Double = QualityPoints / txtBoxTotalHours.Text
Newline = System.Environment.NewLine
semester = CStr(txtBoxResults.Text)
txtBoxTotalGPA.Text = CStr(totalGPA)
txtBoxTotalGPA.Text = Math.Round(totalGPA, 3)
If radButtonFall.Checked Then
semester = "Fall"
ElseIf radButtonSpring.Checked Then
semester = "Spring"
ElseIf radButtonSummer.Checked Then
semester = "Summer"
End If
txtBoxResults.Text = (semester & " " & "Semester : ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & "Total Hours : " & txtBoxTotalHours.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & "Total Qualit Points : " & txtBoxTotalQualityPoints.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & "Total " & semester & " " & "GPA : " & txtBoxTotalGPA.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & "Enrolled Courses : ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse1.Text & " " & txtBoxGrade1.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse2.Text & " " & txtBoxGrade2.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse3.Text & " " & txtBoxGrade3.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse4.Text & " " & txtBoxGrade4.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse5.Text & " " & txtBoxGrade5.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse6.Text & " " & txtBoxGrade6.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse7.Text & " " & txtBoxGrade7.Text)
txtBoxResults.Text = (txtBoxResults.Text & Newline & " ")
txtBoxResults.Text = (txtBoxResults.Text & Newline & txtBoxCourse8.Text & " " & txtBoxGrade8.Text)
End Sub
答案 0 :(得分:0)
我试图在文本框中加粗某些行,而不是所有输出。
不幸的是,TextBox控件不支持格式化文本。您可以更改字体,如果您愿意,可以将其设置为粗体,但所有文本都将为粗体。没有办法只将文本的某些加粗。
您将在Windows记事本中看到相同的限制,它只是一个TextBox控件,其上附有一个菜单以支持加载和保存文件。您可以更改记事本使用的字体,但这是一个万能的事情。无法将条件格式应用于特定行或字符。
如果您需要支持条件格式,则需要切换到RichTextBox control。这基本上是Wordpad使用的,它解释了为什么Wordpad更像是一个真正的文字处理器而不是记事本。当然,这种功能有点可用性:使用RichTextBox控件比在代码中使用简单的TextBox控件更麻烦。
并且我还尝试将几行填充到文本框的最右侧,而不是所有行,以使其看起来更清晰。
这是......有点可能,虽然它并不漂亮。假设您的表单(或至少文本框控件)不可调整大小,并且字体永远不会更改,您可以计算将文本填充到文本框最右侧所需的空格数,并插入该确切数字。
为此,您将使用TextRenderer.MeasureText
方法。 The simplest overload将告诉您当以指定字体(文本框使用的字体)绘制时,特定文本字符串将占用的像素数。您将使用该信息,从文本框控件的client area中减去该信息,然后使用所需的空格数填充字符串(例如String.PadLeft
)。
唉!太痛苦了!显然,每次更改文本时都需要重新计算。滚动条也会破坏你仔细的布局,所以即使改变垂直线也需要重新计算。
如果您确实需要创建一些视觉区别并且无法切换到其他控件,只需在行的开头插入一个选项卡以缩进它们。在VB.NET中,使用常量vbTab
将制表符插入字符串中;例如,myTextBox.Text = vbTab & "Some text"
但是从阅读示例代码开始,我觉得你试图显示一些计算的格式化结果。你根本不需要或想要一个文本控件!您需要支持用户输入时,唯一需要文本控件(如TextBox或RichTextBox)的时间。如果您正在计算输出,则可能不支持在同一位置输入。因此,为什么不尝试使用ListBox或ListView控件呢?这可以为您处理所有多行布局和格式化内容,这将使您的生活更轻松。
答案 1 :(得分:-2)
尝试使用Panel来包含控件,如果您仍想使用文本框(我认为最好使用标签),请在Panel中将它们添加为控件。如下所示:
'create textbox
Dim tx, tx2 As New TextBox
'set font style, location, and text
tx.Font = New System.Drawing.Font(tx.Font, FontStyle.Bold)
tx2.Font = tx.Font
tx2.Location = New System.Drawing.Point(tx.Location.X, tx.Location.Y + 25)
tx.text = "here"
tx2.text = "here"
'add them into Panel
Panel1.Controls.Add(tx)
Panel1.Controls.Add(tx2)
您可以修改tx的文字,字体等。