2016-04-14 108 views
-1

我有一些幫助彈出窗口,當用戶按下「?」時顯示一些文本。標籤旁邊的下拉菜單來解釋不同的選擇。C#Winforms幫助文本更改字體

我做了它使用Help.ShowPopup命令,因爲這似乎是最簡單的。

我希望有一種方法可以將不同的字體屬性添加到文本的某些部分,或者至少對整個事物添加不同的字體屬性,而無需轉到CHM/HTML幫助文件的方向。

這裏就是我想要做:

private void helpLbl_Click(object sender, EventArgs e) 
{ 
    // for some reason, it ignores the 'parent' parameter 
    // and lays it out on the screen's coordinates 
    Point helpLocation = helpLbl.PointToScreen(Point.Empty); 
    helpLocation.Y += helpLbl.Height; // have it display underneath the control 

    Help.ShowPopup(this, // hosting form 
@"<b>Fixed:</b> 
Removes a fixed amount from the sale 
<b>Percent Value:</b> 
Removes a set percentage of the selected package from the sale 
...", helpLocation); 

我希望,因爲有使用的HTML文檔顯示的幫助下,我可以使用HTML標記來格式化正在顯示的內容的選項,但它並不是如此。有任何想法嗎?

有沒有辦法在幫助彈出窗口中顯示RichTextBox?

另一種可能性是即時生成HTML文檔,但如果我不直接提供文本,它會要求輸入「url」,我認爲這可能會導致少量的I試圖在這裏做。

+1

爲什麼不寫你自己的幫助框?彈出一個控件或表單並不難,你可以根據自己的需要進行設計,包括一個RTB .. – TaW

+0

嗯,我希望能夠使用內置的功能來獲得幫助,因此它看起來與人們期望的跨OS版本和用戶設置等等。這是QA要求的一個小特點。 ps:對於牆壁文字感到抱歉,並感謝您將它們分開! –

回答

1

你有兩種選擇。一種是使用WebBrowser Control。這本地接受HTML並顯示它。它的問題是它的一種臃腫只是作爲一個簡單的標籤使用。

你的第二個選擇是簡單地創建一個RichTextLabel,只是這樣的:

public class RichTextLabel : RichTextBox 
{ 
    public RichTextLabel() 
    { 
     BorderStyle = BorderStyle.None; 
    } 
} 

添加到您的形式,並設置Rtf屬性爲您的RTF代碼。您將不得不將HTML轉換爲RTF,例如,如果您有諸如Microsoft Word之類的程序,這很容易。