我使用以下代码将一些彩色文本放入我的富文本框中:
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectedText = "Name";
richTextBox1.SelectionColor = Color.Black;
richTextBox1.SelectedText = ": some message.";
但是当我通过将其parent属性设置为null来隐藏用户的richtextbox时(我有这个面板不时包含不同的富文本框),并将其放回去,富文本框不会保留文本我应用的颜色。所有文字都变黑了。
更新:我尝试了一个实验。在我的主程序中,我有一个UserControl(有一个Panel),我在其中放置了带有彩色文本的RichTextBox。我有很多RichTextBox,我将它存储到HashTable。
所以当我需要一个RichTextBox时,我从HashTable中检索它,将一些彩色文本放入其中,将它放在我的UserControl面板中,最后将我的UserControl放到我程序的Form中。当用户点击按钮时,我的UserControl实际上可以暂时从程序的表单中删除,我使用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个按钮,但保留了文本颜色。
答案 0 :(得分:4)
您不应使用Parent
属性来隐藏,而应使用Visible
属性。
如果使用richTextBox.Visible = false
隐藏richtextbox,则会保留其格式(已测试)。
编辑:
如下面的评论所述,我建议您只使用一个RichTextBox
并在Rtf
(或Dictionary
)中存储多个Hashtable
字符串,以模仿存在不同的RichTextBox
'es。
我的意思是Here