Порядок инициализации свойств дизайнера Winforms в C#C#

Место общения программистов C#
Ответить
Anonymous
 Порядок инициализации свойств дизайнера Winforms в C#

Сообщение Anonymous »

У меня есть пользовательский элемент управления с двумя свойствами, которые подходят для моей текущей проблемы. int NumberOfColumns и строку AssignedLabels. NumberOfColumns настраивает количество столбцов панели tablelayout. AssignedLabels будет строкой, разделенной CRLF, для присвоения значений меткам, содержащимся в TableLayoutPanel. Когда строка AssignedLabels разбивается по CRLF и количество элементов массива не соответствует текущему значению NumberOfColumns, назначения не выполняются.
Дизайнер сериализует все в алфавитном порядке... поэтому AssignedLabels< /code> будет первым, а NumbersOfColumns вторым. Значением по умолчанию для NumberOfColumns является 8.
Если я установлю количество столбцов равным 2 в дизайнере и назначу ему метки, он будет сериализован правильно:

Код: Выделить всё

x.AssignedLabels = "Yes\r\nNo";
x.NumberOfColumns = 2;
Но при десериализации сначала считывается свойство AssignedLabels, а в это время NumberOfColumns по-прежнему является значением по умолчанию (8), и поэтому никакие назначения не будут выполняться. быть сделано, поскольку разделенная строка не соответствует количеству столбцов.
Конечно, я мог бы переименовать NumberOfColumns во что-то вроде AaaaaaaNumberOfColumns, чтобы сначала он был сериализован, но это немного хакерски. Существуют ли какие-либо атрибуты для управления порядком сериализации или другой более прозрачный подход к решению этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/791 ... tion-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»