Как связать BackColor (или другие свойства) элемента управления со строковым значением, хранящимся в DataSource? - PullRequest
1 голос
/ 26 февраля 2020

Итак, у меня есть база данных со значениями цвета, хранящимися в формате ARBG как INTEGERS. Я хочу привязать задний цвет элемента управления к базе данных, чтобы цвет соответствовал фону элемента управления в соответствии с выбранной записью. (т. е. каждая запись имеет цвет, и когда форма изменяет отображение записи в источнике привязок, фон элемента управления изменяется, чтобы соответствовать цвету INT в базе данных для этой записи).

Пока у меня есть это (что делает не работает):

pictureBox1.DataBindings.Add("BackColor", BindingSource1, "ColorINT");

Проблема заключается в том, что база данных хранит цвет как INTEGER, а привязка данных ожидает цвет, но я не могу вызвать функцию Color.FromArgb, чтобы изменить привязку обратно на цвет , Как я могу это сделать?

1 Ответ

0 голосов
/ 27 февраля 2020

Спасибо Джими за ответ, и я наконец смог разобраться. Публикация для кого-то, у кого может быть похожий вопрос:

private void IntegerToColor(object sender, ConvertEventArgs cevent)
    {
        if (cevent.DesiredType != typeof(Color)) return;
        cevent.Value = Color.FromArgb(Convert.ToInt32(cevent.Value));
    }

// затем при загрузке формы

Binding PicColorBind = new Binding("BackColor", BindingSource1, "ColorINT");
        PicColorBind.Format += new ConvertEventHandler(IntegerToColor);
        picColor.DataBindings.Add(PicColorBind);
...