Usuário com melhor resposta
Привязка List<T> к BindingNavigator

Pergunta
-
Добрый день. Приложение WinForm. Есть список List<T>. Задаю BindingSource.DataSource к этому списку. Далее подключаю BindingNavigator к BindingSource. После этого кнопка <+> Добавить у BN становиться не доступной, а кнопка <х> удалить доступна. Почему не пойму?
Respostas
-
Я уточню вопрос. У меня List<Image>. Далее я пишу
List<Image> imd; //один столбец BindingSource bs = new BindingSource(); BindingNavigator bn; bs.DataSource = img; bs.AllowNew = true; //разрешение на новую строку bn.datasource = bs; bs.AllowNewItem += Bs_AddingNew; //только подключил
Как только нажимаю кнопку добавить, тут же вылетает исключение :
System.InvalidOperationException: "Вызов AddNew для типа 'System.Drawing.Image' невозможен.
У данного типа нет публичного конструктора по умолчанию.
Вызов AddNew для типа 'System.Drawing.Image' возможен после
обработки события AddingNew и создания соответствующего объекта."Вам же четко написали причину - нет конструктора по умолчанию (без параметров). Ведь код для создания нового экземпляра ничего не знает о том что он создает и не может "выбрать" нужный конструктор и обеспечить параметры для него, единственный вариант - конструктор по умолчанию, а его нет.
Оберните ваше изображение в свой класс который будет иметь конструктор по умолчанию, тогда все заработает.
This posting is provided "AS IS" with no warranties, and confers no rights.
- Sugerido como Resposta Maksim MarinovMicrosoft contingent staff, Moderator quarta-feira, 27 de janeiro de 2021 17:16
- Marcado como Resposta ДДВ sexta-feira, 29 de janeiro de 2021 08:25
Todas as Respostas
-
Здравствуйте,
Попробуйте в BindingSource:
this.customersBindingSource.AllowNew = true;
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
-
Я уточню вопрос. У меня List<Image>. Далее я пишу
List<Image> imd; //один столбец BindingSource bs = new BindingSource(); BindingNavigator bn; bs.DataSource = img; bs.AllowNew = true; //разрешение на новую строку bn.datasource = bs; bs.AllowNewItem += Bs_AddingNew; //только подключил
Как только нажимаю кнопку добавить, тут же вылетает исключение :
System.InvalidOperationException: "Вызов AddNew для типа 'System.Drawing.Image' невозможен.
У данного типа нет публичного конструктора по умолчанию.
Вызов AddNew для типа 'System.Drawing.Image' возможен после
обработки события AddingNew и создания соответствующего объекта." -
-
Я уточню вопрос. У меня List<Image>. Далее я пишу
List<Image> imd; //один столбец BindingSource bs = new BindingSource(); BindingNavigator bn; bs.DataSource = img; bs.AllowNew = true; //разрешение на новую строку bn.datasource = bs; bs.AllowNewItem += Bs_AddingNew; //только подключил
Как только нажимаю кнопку добавить, тут же вылетает исключение :
System.InvalidOperationException: "Вызов AddNew для типа 'System.Drawing.Image' невозможен.
У данного типа нет публичного конструктора по умолчанию.
Вызов AddNew для типа 'System.Drawing.Image' возможен после
обработки события AddingNew и создания соответствующего объекта."Вам же четко написали причину - нет конструктора по умолчанию (без параметров). Ведь код для создания нового экземпляра ничего не знает о том что он создает и не может "выбрать" нужный конструктор и обеспечить параметры для него, единственный вариант - конструктор по умолчанию, а его нет.
Оберните ваше изображение в свой класс который будет иметь конструктор по умолчанию, тогда все заработает.
This posting is provided "AS IS" with no warranties, and confers no rights.
- Sugerido como Resposta Maksim MarinovMicrosoft contingent staff, Moderator quarta-feira, 27 de janeiro de 2021 17:16
- Marcado como Resposta ДДВ sexta-feira, 29 de janeiro de 2021 08:25