Есть ли способ определить, будет ли текстовое свойство формы вписываться в верхнюю панель с использованием текущей ширины формы (или если она будет усечена с помощью «...»)?Есть ли способ определить, будет ли текст формы вписываться?
ответ
Вы можете заглянуть в TextRenderer.MeasureText()
.
Чтобы вычислить ширину текста заголовка используйте этот фрагмент:
var width = TextRenderer.MeasureText(caption, SystemFonts.CaptionFont).Width;
Вы можете использовать размер вашей формы, вычитать фиксированное значение для значка (если он виден) и кнопки в правом верхнем углу (зависит от версии ОС и от видимого состояния кнопок [Свернуть] [Максимизировать]) и проверьте, все ли это положительно. Это не может дать вам совершенно точный результат, но это, вероятно, самое простое приближение.
До сих пор этот метод кажется вычислить довольно точное приближение:
/// <summary>
/// Calculates an approximation of the available caption width
/// Depends on OS and theme
/// </summary>
/// <returns>Width</returns>
private int CalcAvaliableCaptionWidth()
{
return
// Form width
Width
// Icon
- (Icon == null ? 0 : Icon.Width)
// Minimize button (26 on Win8)
- (MinimizeBox ? SystemInformation.CaptionButtonSize.Width : 0)
// Maximize button (26 on Win8)
- (MaximizeBox ? SystemInformation.CaptionButtonSize.Width : 0)
// Close button (45 on Win8)
- SystemInformation.CaptionButtonSize.Width;
}
Вы можете попробовать мое маленькое приложение, проверка WinForm
Исходный код: https://gist.github.com/CodeZombieCH/b9def0b0d9c41a98593a
Спасибо @Plutonix за подсказку SystemInformation.CaptionButtonSize
.
Уверен, вы знаете, что этот ответ неполный. Как вы обнаружите, будет ли полученный TextSize в форме Caption area без стандартных кнопок и значков для контекстного меню? – Steve
используйте 'System.Windows.Forms.SystemInformation.CaptionButtonSize', чтобы получить размер стандартных кнопок заголовка. Количество присутствующих будет зависеть от других реквизитов формы (MinimizeBox, ControlBox и т. Д.). – Plutonix
CodeZombie и @Plutonix, спасибо, это сработало отлично! – Mierzen
- 1. Есть ли способ RESTful определить, будет ли POST успешным?
- 2. Есть ли способ определить, переопределена ли функция?
- 3. Есть ли способ определить, отключена ли анимация
- 4. Есть ли способ определить, заблокирован ли объект?
- 5. Есть ли способ определить, произошло ли исключение?
- 6. Есть ли способ измерить количество строки, которая будет вписываться в печатную область без использования графического объекта?
- 7. Есть ли способ определить переменную в HTML?
- 8. C++ Builder 2009 - Есть ли способ определить недоступные формы?
- 9. Есть ли способ найти, есть ли текст на веб-сайте?
- 10. Swing: Есть ли способ определить, есть ли мышь?
- 11. Есть ли способ определить приоритетность зависимостей фрагментов?
- 12. Есть ли способ проверить, есть ли текст между узлами
- 13. Есть ли способ сгустить символ легенды формы?
- 14. Есть ли лучший способ определить эти маршруты?
- 15. Как определить, сколько текста будет вписываться в TextView в Android?
- 16. Есть ли способ определить, добавил ли Convert.ToDateTime год?
- 17. Есть ли способ сделать перфорированный текст?
- 18. Есть ли способ определить, установлено ли приложение iPhone/iPad?
- 19. Есть ли способ сделать объект многократной формы?
- 20. Есть ли способ определить двусмысленность в грамматике?
- 21. Есть ли способ определить поведение арифметики структуры?
- 22. Есть ли способ определить неиспользуемые привязки данных
- 23. xlsxwriter: есть ли способ определить «named cell»?
- 24. Есть ли способ определить, какая камера подключена?
- 25. Есть ли способ определить чистые функции?
- 26. Есть ли способ определить, что соединение управляется?
- 27. Есть ли способ определить перечисление в python?
- 28. Есть ли способ определить, когда UIPickerView перезагрузился?
- 29. Есть ли способ определить приоритет сервлет-фильтра?
- 30. Есть ли лучший способ определить этот генератор?
[Нет] (http://blogs.msdn.com/b/oldnewthing/archive/2015/05/08/10613194.aspx). –