2009-10-13 1 views
1

Мне нужен код для преобразования стандартного текстового поля C# в текст TextBox, что означает добавление «° C» к концу текста в текстовом поле с другим цветом, чем цвет по умолчанию.Температура TextBox в C#

ответ

7

Чтобы получить символ степени, вы можете использовать код символа 176, например.

Char degree = (Char)176 

Вы можете добавить это к содержанию текстового поля, или я бы просто добавить метку справа от текстового поля, с символом степени, если вы хотите контролировать ForeColor легко.

+1

Я думаю, что проще использовать '' ° "', не так ли? – Groo

5

TextBox - это текстовый редактор. Чтобы получить разные цвета, вам придется гадать с помощью богатого текстового поля. Почему бы не поставить «° C» на этикетке, расположенной справа от текстового поля? Это также упростит ваш синтаксический анализ и визуализацию кода.

+0

+1, я согласен, все остальное в значительной степени переборщило. – Groo

0

Возможно, вы можете создать свой собственный элемент управления, который наследуется от TextBox, а затем переопределить свойство Text, чтобы автоматически добавлять ° C, хотя другой цвет внутри того же TextBox может быть проблемой.

Почему вы хотите иметь ° C в TextBox? Не может ли это быть сразу после TextBox? Вы можете установить статический текст и цвет так, как хотите.

0

Другие предлагаемые здесь решения, вероятно, достаточны для вашего применения; Однако, если у вас была необходимость осуществления этого с повторного использования в виду, здесь есть пользовательский элемент управления решением, которое вы можете расширить, чтобы лучше удовлетворить заявку:

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 базового текстового поля, переопределяя свойство текста настраиваемого элемента управления. Вы можете просмотреть другие свойства и события в зависимости от того, что нужно выполнить вашему приложению.