2013-03-29 47 views
1

我想在文本框中粗體顯示某些行,而不是所有的輸出。而且我正在嘗試在文本框的最右邊填充幾行,而不是所有行,以使其看起來更清晰。將文本框中的特定行添加到右側並將其縮進

我想加粗所有(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

我想大膽的只是某些線路中的文本框,不是所有的輸出。

不幸的是,TextBox控件不支持格式化文本。你可以改變字體,如果你願意的話可以加粗,但是的所有的文字都會加粗。沒有辦法只將的一些的文字加粗。

您會在Windows記事本中看到相同的限制,它只是一個TextBox控件,它附帶有一個菜單以支持加載和保存文件。您可以更改記事本使用的字體,但這是一種萬能的事情。沒有辦法將條件格式應用於特定的行或字符。

如果您需要支持條件格式設置,則需要改爲使用RichTextBox control。這基本上是寫字板使用的,它解釋了爲什麼寫字板更像是一個真正的文字處理器比記事本。當然,這種能力會帶來一些可用性開支:使用RichTextBox控件比在代碼中使用簡單的TextBox控件更麻煩。

此外,我正在嘗試在文本框的最右邊填充幾行,而不是所有行,以使其看起來更清晰。

這是可能的,儘管它並不漂亮。假設您的表單(或至少文本框控件)不可調整大小,並且字體永遠不會更改,您可以計算將文本填充到文本框最右側並插入確切數字所需的空格數。

爲此,您將使用TextRenderer.MeasureText方法。 The simplest overload會告訴你一個特定的文本字符串在指定字體(文本框使用的字體)中繪製時將佔用的像素數量。您將使用該信息,將其從文本框控件的client area中減去,然後將字符串(使用例如String.PadLeft)填充所需的空格數。

呃!多麼痛苦!顯然,每次文本更改時都需要重新計算。滾動條也會破壞您的精心佈局,因此即使豎線數量發生變化也需要重新計算。

如果您確實需要創建一些視覺區別,並且您不能切換到其他控件,只需在行的開頭插入一個製表符來縮進它們。在VB.NET中,您使用常量vbTab將選項卡插入到字符串中;例如,myTextBox.Text = vbTab & "Some text"

但是,從閱讀您的示例代碼,它看起來像我試圖顯示一些格式化的計算結果。你真的不需要或想要一個文本控制!唯一需要文本控件的時候(比如TextBox或RichTextBox)是需要支持用戶輸入的時候。如果你計算輸出,你可能不支持在同一個地方輸入。因此,爲什麼不嘗試使用ListBox或ListView控件呢?這爲您處理所有多行佈局和格式化的東西,這會讓您的生活變得更加輕鬆。

-2

嘗試使用面板來包含控件,如果您仍想使用文本框(我認爲它更好地使用標籤),請將它們添加爲面板中的控件。如下圖所示:

'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的文字,字體和等

+1

世界爲什麼你會添加TextBox控件的ListBox控件?這不是使用ListBox的正確方法。 ListBox是*不是容器控件。它不是爲了控制其他控件而設計的。如果你想要這種行爲,你需要使用一個容器控件,比如Panel,TableLayoutPanel或FlowLayoutPanel。 –

+0

你是對的,我的錯 – Nore

相關問題