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