[英]Temperature TextBox In C#
我需要一些代碼將標准C#TextBox轉換為溫度TextBox,這意味着在文本框中的文本末尾添加“°C”,並使用不同於默認顏色的另一種顏色。
要獲得學位符號,您可以使用字符代碼176,例如
Char degree = (Char)176
然后,您可以將其附加到文本框內容中,或者,如果您想輕松控制原色,只需在文本框的右側添加一個帶有度數符號的標簽。
TextBox是純文本編輯器。 要獲得不同的顏色,您將不得不使用富文本框來解決。 為什么不將“°C”放在文本框右側的標簽中? 這也將使您的解析和渲染代碼更加容易。
您可以創建自己的控件,該控件繼承自TextBox,然后重寫Text屬性以自動添加°C,盡管同一TextBox中的其他顏色可能會出現問題。
為什么要在TextBox中使用°C? 不能只是在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
通過重寫自定義控件的Text屬性的基礎文本框的屬性。 您可能希望根據應用程序需要完成的操作公開其他屬性和事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.