2010-01-11 3 views
0

У меня есть небольшое количество данных клиентских приложений Windows, привязанных к одному серверу. Я создал DataSet, используя мастер в VS 2005, и он автоматически создает базовый адаптер и GridView. У меня также есть элемент управления RichText и привязан к этому DataSet. Все хорошо пока, но мне нужно заменить определенные символы (~) на лету, прежде чем данные будут показаны в RichTextbox. Это можно сделать.Rich Text Box. .NET 2.0 Форматирование содержимого

ответ

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 сохраняются в базе данных)

+0

Thomas, Спасибо за ответ. Я делал то же самое и случайно нашел это событие в «richTextBox1_TextChanged», и в этом случае я добавил эту строку кода «richTextBox1.Text = richTextBox1.Text.Replace (« ~ »,« \ n »);». А также сделал контроль только для чтения, чтобы пользователь не мог вносить изменения в текст внутри него и запускать событие TextEvent_Changes. Считаете ли вы, что этот подход в порядке/лучше/плохо? Еще раз спасибо за ваш вход. Ranjit – Ranjit

+0

Вы не должны явно изменять свойство Text, потому что оно обновит источник данных через привязку ... События формата и разбора предназначены именно для того, что вы пытаетесь сделать –