Мне нужен код для преобразования стандартного текстового поля C# в текст TextBox, что означает добавление «° C» к концу текста в текстовом поле с другим цветом, чем цвет по умолчанию.Температура TextBox в C#
ответ
Чтобы получить символ степени, вы можете использовать код символа 176, например.
Char degree = (Char)176
Вы можете добавить это к содержанию текстового поля, или я бы просто добавить метку справа от текстового поля, с символом степени, если вы хотите контролировать ForeColor легко.
TextBox - это текстовый редактор. Чтобы получить разные цвета, вам придется гадать с помощью богатого текстового поля. Почему бы не поставить «° C» на этикетке, расположенной справа от текстового поля? Это также упростит ваш синтаксический анализ и визуализацию кода.
+1, я согласен, все остальное в значительной степени переборщило. – Groo
Возможно, вы можете создать свой собственный элемент управления, который наследуется от TextBox, а затем переопределить свойство Text, чтобы автоматически добавлять ° C, хотя другой цвет внутри того же TextBox может быть проблемой.
Почему вы хотите иметь ° C в TextBox? Не может ли это быть сразу после TextBox? Вы можете установить статический текст и цвет так, как хотите.
Другие предлагаемые здесь решения, вероятно, достаточны для вашего применения; Однако, если у вас была необходимость осуществления этого с повторного использования в виду, здесь есть пользовательский элемент управления решением, которое вы можете расширить, чтобы лучше удовлетворить заявку:
public class TemperatureTextBox : ContainerControl
{
private const int BORDER_SIZE = 1;
// Exposes text property of text box,
// expose other text box properties as needed:
public override string Text
{
get { return textBox.Text; }
set { textBox.Text = value; }
}
private TextBox textBox = new TextBox()
{
Text = string.Empty,
BorderStyle = BorderStyle.None,
Dock = DockStyle.Fill
};
private Label label = new Label()
{
Text = "°C",
TextAlign = ContentAlignment.MiddleCenter,
Size = new Size()
{
Width = 32
},
BackColor = SystemColors.Window,
Dock = DockStyle.Right
};
public TemperatureTextBox()
{
this.BackColor = SystemColors.Window;
this.Padding = new Padding(BORDER_SIZE);
this.Controls.Add(label);
this.Controls.Add(textBox);
this.PerformLayout();
}
// Constrain control size to textbox height plus top and bottom border:
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Height = (textBox.Height + (BORDER_SIZE * 2));
}
// Render a border around the control:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawRectangle(
SystemPens.ControlDarkDark,
new Rectangle()
{
Width = (this.Width - BORDER_SIZE),
Height = (this.Height - BORDER_SIZE)
});
}
}
Просто создать новый класс и падение этого введите код и перестройте решение. Он создаст новый элемент управления TemperatureTextBox
в панели инструментов, который можно отбросить на новую форму и визуально спроектировать.
Этот пример предоставляет свойство Text
базового текстового поля, переопределяя свойство текста настраиваемого элемента управления. Вы можете просмотреть другие свойства и события в зависимости от того, что нужно выполнить вашему приложению.
Я думаю, что проще использовать '' ° "', не так ли? – Groo