Я поместил какой-то цветной текст в мое текстовое поле, используя следующий код:
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectedText = "Name";
richTextBox1.SelectionColor = Color.Black;
richTextBox1.SelectedText = ": some message.";
Но когда я скрываю richtextbox от пользователя, установив его родительское свойство в null (у меня есть эта панель, котораявремя от времени содержит различные текстовые поля), и отложите его, текстовое поле не сохраняет цвета текста, которые я к нему применил.Все тексты становятся черными.
Обновление: я попробовал эксперимент.В моей основной программе у меня есть UserControl (который имеет панель), где я помещаю RichTextBox с цветным текстом.У меня есть много RichTextBox, которые я храню в HashTable.
Поэтому, когда мне нужен RichTextBox, я извлекаю его из своего HashTable, помещаю в него какой-то цветной текст, помещаю его в панель моего UserControl и, наконец, помещаю свой UserControl вФорма моей программы.Мой UserControl фактически может быть временно удален из формы программы, когда пользователь нажимает кнопку, я использую Controls.Remove ().Чтобы вернуть его обратно в форму, я использую Controls.Add ().Проблема в том, что когда пользовательский элемент управления добавляется обратно, тексты 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;
}
}
Свойство ChatLog usercontrol1 имеет видэто:
public Control ChatLogPanel
{
get
{
return panel1.Controls[0];
}
set
{
panel1.Controls.Clear();
panel1.Controls.Add(value);
}
}
Я случайно нажимаю 3 кнопки в моей экспериментальной программе, но цвета текста сохраняются.