Порядок инициализации свойств дизайнера 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

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