런타임에 텍스트 상자의 텍스트를 굵게 설정하려면 어떻게합니까?


98

저는 Windows 양식을 사용하고 있으며 특정 값인 경우 텍스트를 굵게 만들고 싶은 텍스트 상자가 있습니다.

런타임에 글꼴 특성을 어떻게 변경합니까?

textbox1.Font.Bold라는 속성이 있지만 이것은 Get 전용 속성입니다.

답변:


181

글꼴 자체의 굵은 체 속성은 읽기 전용이지만 텍스트 상자의 실제 글꼴 속성은 그렇지 않습니다. 다음과 같이 텍스트 상자의 글꼴을 굵게 변경할 수 있습니다.

  textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);

그리고 다시 :

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);

1
감사! 와우, 상상했던 것보다 훨씬 쉬웠습니다. 따라서 글꼴은 문자열과 같다는 뜻입니다. 일단 생성하면 변경할 수 없습니다. 새 인스턴스 만 선언 할 수 있습니다.
Diskdrive 2010-06-21

2
예, 일단 생성되면 상태를 변경할 수 없다는 점에서 문자열처럼 동작하는 것 같습니다 . 즉, 변경 불가능 합니다. 그러나 글꼴이 변경 불가능하다는 것을 언급하는 MSDN 기사가 있지만 글꼴 자체에 대한 실제 참조는 이것을 언급하지 않습니다.
Tim Lloyd

linkbutton의 경우 이것은 나를 위해 일했습니다 : button.Font.Bold = true
deebs

부분 텍스트에 대해 동일한 작업을 수행 할 수 있습니까? 텍스트의 일부만 강조하고 싶습니다.
Anil

3

응용 프로그램에 따라 해당 글꼴 할당을 텍스트 변경 또는 해당 텍스트 상자의 포커스 / 언 포커스에 사용하고 싶을 것입니다.

다음은 모양에 대한 간단한 샘플입니다 (텍스트 상자 만있는 빈 양식. 텍스트가 '굵게'표시되고 대소 문자를 구분하지 않으면 글꼴이 굵게 표시됨).

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        RegisterEvents();
    }

    private void RegisterEvents()
    {
        _tboTest.TextChanged += new EventHandler(TboTest_TextChanged);
    }

    private void TboTest_TextChanged(object sender, EventArgs e)
    {
        // Change the text to bold on specified condition
        if (_tboTest.Text.Equals("Bold", StringComparison.OrdinalIgnoreCase))
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Bold);
        }
        else
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Regular);
        }
    }
}

1

다음 과 같이 일반 스타일굵은 스타일Extension 사이를 전환 하는 방법을 사용할 수 있습니다 .

static class Helper
    {
        public static void SwtichToBoldRegular(this TextBox c)
        {
            if (c.Font.Style!= FontStyle.Bold)
                c.Font = new Font(c.Font, FontStyle.Bold);
            else
                c.Font = new Font(c.Font, FontStyle.Regular);
        }
    }

그리고 사용법 :

textBox1.SwtichToBoldRegular();

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.