我把一些彩色文本到我的丰富的文本框我用下面的代码:如何在富文本框中保留文本的颜色?
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