Как использовать Visual Studio Designer для настройки привязок данных в winforms - PullRequest
0 голосов
/ 01 ноября 2018

Мы создаем приложение winforms. Мы хотим использовать пользовательский интерфейс Visual Studio для настройки привязок данных во время разработки. Под этим я подразумеваю, что мы хотим определить во время разработки, какой источник данных и свойство должны использовать текстовое поле, флажок или любой другой элемент управления.

Мы помещаем DataSet в форму. Этот набор данных будет заполнен во время выполнения. Мы помещаем BindingSource в форму и устанавливаем его DataSource в DataSet. Мы помещаем текстовое поле в форму, переходим в свойства, открываем раздел «Данные» и щелкаем раскрывающийся список для свойства «Текст». Однако BindingSource, который мы помещаем в форму, не отображается как нечто, с чем мы можем связываться.

Мы хотим использовать BindingSource в Форме, а не на уровне проекта. Все веб-сайты, на которые мы смотрели, используют либо BindingSource уровня проекта, либо создают Bindingsource во время выполнения кода, а затем создают привязки для элементов управления в коде.

Вопрос: У нас есть правильное использование компонентов? (т.е. TextBox или другой элемент управления связан с Bindingsource, а BindingSource связан с DataSource) Если это не правильно, каков правильный метод для привязки данных во время разработки.

Если проблема в том, что в наборе данных нет данных, определенных во время разработки, то мы попытались извлечь пользовательский класс из BindingSource и реализовать интерфейс IComponent, который будет использоваться в качестве источника данных для BindingSource. В этом случае, когда мы пытаемся удалить пользовательский компонент на форме, мы получаем следующее: Ошибка при удалении пользовательского компонента

Однако, у нашего класса есть конструктор, который не принимает параметров, он также имеет конструктор, который принимает IContainer в качестве параметра:

public class CCSItemBase : BindingSource, IComponent
{
    public CCSItemBase()
    {
    }
    public CCSItemBase(IContainer Container):base(Container)
    {
    }
}
...