Я разработал объект UserControl для реализации пользовательского интерфейса для моей надстройки Word.Во время выполнения, когда пользователь открывает панель задач, я добавляю экземпляр этого UserControl в активное окно (через коллекцию CustomTaskPanes), устанавливаю для его свойства Visible значение true, и вот, я получаю свою панель задач ...кроме того, что оно усечено, я вижу только левые 70%, и мне нужно вручную изменить размер панели задач, чтобы увидеть UserControl в полном объеме.
Во-первых, я не понимаю, почему поведение по умолчаниюпанели задач не было бы просто взять расчетный размер того, что я положил в него.Но все становится еще хуже.
Следующим моим логическим шагом было явное задание ширины области задач равной ширине моего UserControl.Поскольку конструктор Windows Forms показал, что его свойство Size равно «700, 1500», я глупо подумал, что смогу прочитать это свойство во время выполнения и назначить его ширине панели задач.Код выглядит следующим образом:
var myTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(myUserControl, title);
myTaskPane.Visible = true;
myTaskPane.Width = myUserControl.Width;
Это неожиданно завершилось неудачно, поскольку оказывается, что во время выполнения myUserControl.Width равно нулю.Все, что я получаю, это очень узкая область задач, которая показывает только оставшиеся 20% моего UserControl.Я также попытался назначить myUserControl.Size.Width с тем же результатом.
Поэтому я сохранил свой проект в облаке и вернулся к нему на следующий день, на другом компьютере, с другимдисплей (4K).К моему удивлению, когда я открыл конструктор Windows Forms, размер UserControl теперь отображался как «432, 1200».Но все выглядело точно так же.
Если я присваиваю немедленное значение myTaskPane.Width, , что работает просто отлично.Если это значение соответствует ширине, сообщенной конструктором Windows Forms, область задач точно соответствует ширине, необходимой для отображения UserControl.За исключением того, что я не в порядке с жесткими параметрами проектирования.Кроме того, какое значение я бы выбрал?700 или 432?Конечно, панель задач на некоторых системах выглядела бы неправильно.
Итак, у меня есть два вопроса: как точно работают размеры UserControl?И где я могу прочитать ширину UserControl во время выполнения?
Хуже всего то, что это кажется чем-то настолько фундаментальным, что должно иметь простое решение, но я просто не могу Google выйти из этого.