簡體   English   中英

C#中的溫度文本框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM