none
RichTextBox 套用文字格式 RRS feed

  • 問題

  • VB.net 2010

    我用一個RichTextBox,還有粗體,斜體,加底線等按鈕

    我選取一段RichTextBox裡的字

    ~----------------------

    ABCDEFGHIJK

    ~----------------------

    按下粗體之後,全部都變成了粗體,斜體,加底線都不見了↓

    ~----------------------

    ABCDEFGHIJK

    ~----------------------

    我希望能夠分別套用粗體樣式,如下

    ~----------------------

    ABCDEFGHIJK

    ~----------------------

    這該如何做到呢?急尋高手幫個忙

    2011年10月30日 上午 06:23

解答

  • 您好

    套用時須將原本的設定加上,參考以下代碼,以粗體為範例

            If Not RichTextBox1.SelectionFont.Bold Then
                RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Bold)
            Else
                RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Bold)
            End If
    


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年10月30日 上午 06:55
    版主
  • 程式運作應該沒有錯吧!

    '切換粗體
    If Not RichTextBox1.SelectionFont.Bold Then
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Bold)
    Else
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Bold)
    End If
    '切換底線
    If Not RichTextBox1.SelectionFont.Underline Then
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Underline)
    Else
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Underline)
    End If
    


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年10月31日 上午 11:17

所有回覆

  • 請參考 RichTextBox 中有包含 "Selection" 這個字的屬性...
    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    2011年10月30日 上午 06:54
    版主
  • 您好

    套用時須將原本的設定加上,參考以下代碼,以粗體為範例

            If Not RichTextBox1.SelectionFont.Bold Then
                RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Bold)
            Else
                RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Bold)
            End If
    


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年10月30日 上午 06:55
    版主
  • 發生了這個錯誤:"並未將物件參考設定為物件的執行個體。"

     

    如果選取的是

    ~-----------------------------

    ABCDEFGHIJK

    ~-----------------------------

    就可以

    如果選取的是

    ~-----------------------------

    ABCDEFGHIJK

    ~-----------------------------

    這一"種"加上其他"種"的格式化文字(例如有些字是粗體,有些斜體 EX:ABCD)

    就不行!!

    2011年10月30日 上午 07:56
  • 您好

    你現在程式碼是怎麼寫的? 錯誤出現在哪一行? 是否有詳細錯誤訊息?


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年10月30日 上午 11:38
    版主
  •  If Not RichTextBox1.SelectionFont.Bold Then  --->在這一行!!
                RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Bold)
            Else
                RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Bold)
            End If
    "並未將物件參考設定為物件的執行個體。"

    如果選取的是

    ~-----------------------------

    ABCDEFGHIJK

    ~-----------------------------

    就可以

    如果選取的是

    ~-----------------------------

    ABCDEFGHIJK

    ~-----------------------------

    這一"種"加上其他"種"的格式化文字(例如有些字是粗體,有些斜體 EX:ABCD)

    就會發生以上錯誤!!


    能不能設定成一個一個字加上剛才那個程式碼的格式?
    • 已標示為解答 張世澤 2011年10月31日 上午 09:50
    • 已取消標示為解答 張世澤 2011年10月31日 上午 09:50
    • 已編輯 張世澤 2011年10月31日 上午 09:51
    2011年10月31日 上午 09:46
  • 程式運作應該沒有錯吧!

    '切換粗體
    If Not RichTextBox1.SelectionFont.Bold Then
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Bold)
    Else
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Bold)
    End If
    '切換底線
    If Not RichTextBox1.SelectionFont.Underline Then
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Or FontStyle.Underline)
    Else
    	RichTextBox1.SelectionFont = New Font(DirectCast(RichTextBox1.SelectionFont.Clone(), Font), RichTextBox1.SelectionFont.Style Xor FontStyle.Underline)
    End If
    


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年10月31日 上午 11:17