Форматировать текстовое поле формы Windows - PullRequest
0 голосов
/ 06 мая 2018

Я использую BindingNavigator и привязываю свой BindingSource, который является DataTable, к текстовому полю. Я заполняю DataTable следующим образом newRow["Email"] = listItem["User_Email_Primary_23x"];, затем привязываю строку DataTable к своему текстовому полю, как это txtEmail.DataBinding.Add("Text", bindingSource1, "Email");

Теперь у меня проблема в том, что данные в DataTable выглядят так, как показано ниже ->

XXXXXXX@XXXX.com; XXXXXX@XXXX.com; XXXXXXXXXX@XXX.com;

Таким образом, когда данные отображаются в текстовом поле формы win, все они отображаются рядом, разделенные точкой с запятой. Я хочу обновить визуальное отображение, чтобы при отображении адресов электронной почты из DataTable в текстовом поле каждое сообщение отображалось друг над другом и имело текстовое поле «Автоматическое расширение», чтобы отображались все сообщения электронной почты. , Таким образом, мои желаемые результаты отображения будут

XXXXXXXXX@XXXXX.com;
XXXXXXXX@XXX.com;
XXXXXXXX@XXX.com;

Как мне отформатировать строку txtEmail.DataBinding.Add... для отображения в желаемом формате?

РЕДАКТИРОВАТЬ - Дополнительная информация -
Благодаря комментариям, предоставленным @Fabio, я получил следующий синтаксис, но получаю 2 ошибки компиляции.

private void AddLineBreak(object sender, ConvertEventArgs cevent)
{
    string dtValue = cevent;
    var result = dtValue.Contains(";") ? string.Join("<br>", dtValue.Split(';')) : cevent;
}

public void BindData()
{
    Binding b = new Binding("Text", bindingSource1, "Email");
    b.Format += new ConvertEventHandler(AddLineBreak);
    txtEmail.DataBinding.Add(b);
}

Что теперь дает мне 2 ошибки компиляции:

cevent in the line `string dtValue = cevent;` is underlined providing error of

Невозможно скрыть преобразование типа 'System.Windows.Forms.ConvertEventArgs' в строку

И вторая ошибка, которую я получаю, находится на линии

dtValue.Contains(";") ? string.Join("<br>", dtValue.Split(';')) : cevent;

с ошибкой

Тип условного выражения не может быть определен, поскольку не существует неявного преобразования между «строкой» и «System.Windows.Forms.ConvertEventArgs»

Что мне делать по-другому, чтобы избежать этих ошибок компиляции?

1 Ответ

0 голосов
/ 06 мая 2018

Параметр ConvertEventArgs cevent - это объект, который содержит информацию о форматированном значении. Назначение обработчика событий для обновления свойства cevent.Value до требуемого значения.

В формате Eventhandlers рекомендуется проверять тип, который вы собираетесь преобразовать. В вашем случае вы проверите, что .DesiredType свойство равно String тип.

Поскольку cevent.Value имеет тип object, вам необходимо привести его к исходному типу перед выполнением любых операций

private void AddLineBreak(object sender, ConvertEventArgs cevent)
{
   if (cevent.DesiredType != typeof(string)) return;

   var originalValue = cevent.Value.ToString();   
   cevent.Value = originalValue.Replace(";", Environment.NewLine);
}

Я думаю, Replace будет также отвечать вашим потребностям и, кажется, будет более понятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...