В отдельных случаях недостаточно ширины метки ссылки

#c# #.net #winforms #controls

#c# #.net #winforms #элементы управления

Вопрос:

env: VS2019 16.6.3 на Windows Server 2008 R2 x64

Воспроизвести шаги:

  1. создайте обычный проект winform .net4.0
  2. перетащите CheckBox на Form1
  3. добавьте новую форму (автоматическое название для Form2 )
  4. перетащите две LinkLabel буквы s и a Label на Form2 , убедитесь, что z-порядок равен: linkLabel1 , linkLabel2 , label1
  5. установите linkLabel1 и linkLabel2 шрифт на Arial, 10.5pt
  6. зарегистрируйте Load событие для Form2 , напишите коды:
     linkLabel2.Text = string.Empty;
    linkLabel1.Text = "<未选择>";
    linkLabel2.Text = "<未选择>";
      
  7. измените Main содержимое метода, чтобы оно соответствовало кодам в program.cs :
     Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    
    new Form1().ShowDialog();
    Application.Run(new Form2());
      
  8. F5 закройте Form1 , теперь вы можете видеть, что linkLabel1 ширины недостаточно

demo.zip

введите описание изображения здесь

Я сообщал об этом сообществу разработчиков, но, основываясь на моем прошлом опыте, они предпочитают close , поэтому я решил опубликовать и здесь.

Комментарии:

1. Они предпочитают не закрываться, они предпочитают исправлять то, что можно исправить, возможно, без нарушения работы существующих приложений. Эти исправления часто поставляются с обновлениями фреймворка. Попробуйте FW 4.8. Кстати, 10.5 — это нечетный размер шрифта.

2. проблема не только в размере шрифта, важен каждый шаг.

3. На Windows 8.1 это выглядит нормально, а не обрезано. На вашем скриншоте label1 шрифт выглядит как Courier New , что может указывать на то, что шрифты ОС ограничены. Пока AutoSize = true установлено значение, оно должно работать так, как ожидалось, если только OS не сообщается о неправильном размере. Возможно, есть обновление или пакет обновления, которые устранили эту проблему.

4. язык моей операционной системы — китайский, label1 шрифт и размер заданы по умолчанию, проблем нет. @Ненависть

5. проблема не в отображении, а в значении ширины, linkLabel1.Width есть 49 , linkLabel2.Width is 65 , я запускаю его на Win10, та же проблема. @Ненависть