我把一些彩色文本到我的豐富的文本框我用下面的代碼:如何在富文本框中保留文本的顏色?
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectedText = "Name";
richTextBox1.SelectionColor = Color.Black;
richTextBox1.SelectedText = ": some message.";
但是當我通過它的parent屬性設置爲NULL用戶隱藏RichTextBox的(我有這種面板擁有不同豐富文本框),並放回去,富文本框不保留我應用於它的文本顏色。所有文本都變黑。
更新:我試過了一個實驗。在我的主程序中,我有一個UserControl(其中有一個Panel),我在其中放置了一個帶有彩色文本的RichTextBox。我有很多RichTextBoxes存儲到HashTable中。
所以,當我需要一個RichTextBox,我從我的HashTable中檢索它,把一些彩色文本放到它裏面,把它放在我的UserControl面板中,最後把我的UserControl放到我的程序的Form中。當用戶單擊按鈕時,我的用戶控件實際上可以暫時從程序的表單中刪除,我使用Controls.Remove()。把它放回到我的表單中,我使用Controls.Add()。問題是,當UserControl被添加回來時,RichTextBox的文本不再被着色。
我試過在另一個實驗程序中做類似的事情。
public partial class Form1 : Form
{
private chat.UserControl1 ChatWindowKuno = new chat.UserControl1();
private Hashtable htChatLogs = new Hashtable(30);
public Form1()
{
InitializeComponent();
createRTBox();
}
private void createRTBox()
{
RichTextBox richTextBox1 = new RichTextBox();
richTextBox1.Multiline = true;
richTextBox1.Dock = DockStyle.Fill;
richTextBox1.ReadOnly = true;
richTextBox1.BackColor = SystemColors.Window;
htChatLogs.Add("Basta", richTextBox1);
}
private void button1_Click_1(object sender, EventArgs e)
{
if (ChatWindowKuno.Parent == null)
ChatWindowKuno.Parent = tabPage2;
else
ChatWindowKuno.Parent = null;
}
private void button2_Click(object sender, EventArgs e)
{
// Clear all text from the RichTextBox;
RichTextBox richTextBox1 = (RichTextBox)htChatLogs["Basta"];
richTextBox1.Clear();
richTextBox1.SelectionFont = new Font("Segoe UI", 8.25F, FontStyle.Regular);
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectedText = "Xel";
richTextBox1.SelectionColor = Color.Black;
richTextBox1.SelectedText = ": Listening to Be My Last by Utada Hikaru.";
richTextBox1.SelectionColor = Color.Gray;
richTextBox1.SelectionFont = new Font("Segoe UI", 8.25F, FontStyle.Italic);
richTextBox1.SelectedText = " [5:56pm] \n";
richTextBox1.SelectionColor = Color.Gray;
richTextBox1.SelectedText = "[5:56pm] ";
richTextBox1.SelectionFont = new Font("Segoe UI", 8.25F, FontStyle.Regular);
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectedText = "Xel";
richTextBox1.SelectionColor = Color.Black;
richTextBox1.SelectedText = ": Listening to Be My Last by Utada Hikaru.";
}
private void button3_Click(object sender, EventArgs e)
{
RichTextBox richTextBox1 = (RichTextBox)htChatLogs["Basta"];
ChatWindowKuno.ChatLog = richTextBox1;
}
}
的UserControl1的ChatLog屬性是這樣的:
public Control ChatLogPanel
{
get
{
return panel1.Controls[0];
}
set
{
panel1.Controls.Clear();
panel1.Controls.Add(value);
}
}
我點擊了3個按鈕隨機在我的實驗方案,但文本顏色被保留下來。
設置'Parent'屬性'null'是「隱藏」控制的一個非常奇怪的方式,確實是一個例子。你從哪裏學習這種技術?你爲什麼喜歡把'Visible'設置爲'false'? – 2012-02-12 11:12:24
我這樣做的原因是因爲我不只是隱藏控件(在我的情況下是一個RichTextBox)。這是因爲我有不同的RichTextBoxes,我根據情況需求一次顯示一個RichTextBox。所以當我實際上從我創建的面板中刪除一個富文本框來添加另一個。 – Xel 2012-02-12 11:51:35
面板可以包含多個控件,因此將所有RichTextBox控件添加到面板並沒有問題,然後通過切換「Visible」屬性來選擇性地隱藏/顯示它們。 – 2012-02-12 11:59:02