У меня есть небольшое количество данных клиентских приложений Windows, привязанных к одному серверу. Я создал DataSet, используя мастер в VS 2005, и он автоматически создает базовый адаптер и GridView. У меня также есть элемент управления RichText и привязан к этому DataSet. Все хорошо пока, но мне нужно заменить определенные символы (~) на лету, прежде чем данные будут показаны в RichTextbox. Это можно сделать.Rich Text Box. .NET 2.0 Форматирование содержимого
0
A
ответ
0
Вам необходимо обработать события переплетения Format
и Parse
.
Binding richTextBoxBinding = richTextBox.DataBindings.Add("Text", bindingSource, "TheTextColumnFromTheDatabase");
richTextBoxBinding.Format += richTextBoxBinding_Format;
richTextBoxBinding.Parse += richTextBoxBinding_Parse;
В Format
случае, преобразовать внутреннее значение для форматированного представления:
private void richTextBoxBinding_Format(object sender, ConvertEventArgs e)
{
if (e.DesiredType != typeof(string))
return; // this conversion only makes sense for strings
if (e.Value != null)
e.Value = e.Value.ToString().Replace("~", "whatever");
}
В Parse
случае, преобразовать форматированный представление к внутреннему значению:
private void richTextBoxBinding_Parse(object sender, ConvertEventArgs e)
{
if (e.DesiredType != typeof(string))
return; // this conversion only makes sense for strings (or maybe not, depending on your needs...)
if (e.Value != null)
e.Value = e.Value.ToString().Replace("whatever", "~");
}
Примечание что вам нужно обработать событие Parse
, если ваша привязка является двусторонней (т. е. пользователь может изменить текст и chan ges сохраняются в базе данных)
Thomas, Спасибо за ответ. Я делал то же самое и случайно нашел это событие в «richTextBox1_TextChanged», и в этом случае я добавил эту строку кода «richTextBox1.Text = richTextBox1.Text.Replace (« ~ »,« \ n »);». А также сделал контроль только для чтения, чтобы пользователь не мог вносить изменения в текст внутри него и запускать событие TextEvent_Changes. Считаете ли вы, что этот подход в порядке/лучше/плохо? Еще раз спасибо за ваш вход. Ranjit – Ranjit
Вы не должны явно изменять свойство Text, потому что оно обновит источник данных через привязку ... События формата и разбора предназначены именно для того, что вы пытаетесь сделать –