#c# #winforms #class #textbox
Вопрос:
Я создал класс для своего собственного типа текстового поля под названием TextBoxUnderline. Класс наследует Систему.Windows.Формы.Текстовое поле. Однако, когда я устанавливаю размер TextBoxUnderline, он изменяется в 1,5 раза по сравнению с размером, когда я добавляю его в просмотр конструктора. Например, если я установлю Size = новый размер(100 100); и добавлю его в designerview, TextBoxUnderline получит размер 150 150.
Хотя, если я установлю MaximumSize = Размер(100,100); это хорошо работает. TextBoxUnderline получает размер 100 100. Однако я не хочу, чтобы значение по умолчанию MaximumSize было равно true.
Это мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
namespace XYZ
{
class TextBoxUnderline : TextBox
{
public TextBoxUnderline()
{
this.BorderStyle = BorderStyle.None;
this.AutoSize = false;
this.BackColor = SystemColors.Control;
this.Size = new Size(200, 200);
//this.MaximumSize = new Size(200, 200);
this.MouseEnter = TextBoxUnderline_MouseEnter;
this.MouseLeave = TextBoxUnderline_MouseLeave;
this.GotFocus = TextBoxUnderline_GotFocus;
this.LostFocus = TextBoxUnderline_LostFocus;
this.Controls.Add(new Label()
{ Height = 1, Dock = DockStyle.Bottom, BackColor = Color.Black });
}
void TextBoxUnderline_MouseLeave(object sender, EventArgs e)
{
if (((TextBoxUnderline)sender).Focused == false)
{
((TextBoxUnderline)sender).BackColor = SystemColors.Control;
}
}
void TextBoxUnderline_MouseEnter(object sender, EventArgs e)
{
((TextBoxUnderline)sender).BackColor = Color.White;
}
private void TextBoxUnderline_LostFocus(object sender, EventArgs e)
{
((TextBoxUnderline)sender).BackColor = SystemColors.Control;
}
private void TextBoxUnderline_GotFocus(object sender, EventArgs e)
{
((TextBoxUnderline)sender).BackColor = Color.White;
}
}
}
Комментарии:
1. Установлено ли в настройках Windows масштабирование дисплея на 150%?
2. Вы проектируете в масштабе 100%? Visual Studio выдает предупреждение, когда вы этого не делаете. — Однако, если ваши формы масштабируются до шрифта, это все равно произойдет. Когда вы найдете машину, которая вот так масштабирует шрифт, то есть.
3. Масштабирование моего дисплея установлено на 150% из-за того, что я разрабатываю экран с диагональю 13 дюймов для 24 дюймов (короче говоря: протоколы безопасности компании превращают разработку на наших компьютерах в кошмар, я предпочитаю использовать свой персональный компьютер). Это решило проблему! Не могли бы вы, пожалуйста, ответить как решение, чтобы я мог отметить его как решенное?
Ответ №1:
Похоже, что масштабирование вашего дисплея установлено на 150% в настройках Windows. Вам нужно будет установить это значение на 100%, если вы хотите, чтобы пиксели на экране соответствовали размеру, указанному в вашем коде.