source

Windows 양식 레이블에서 텍스트를 선택할 수 있습니까?

manysource 2023. 6. 9. 22:07

Windows 양식 레이블에서 텍스트를 선택할 수 있습니까?

Windows Form 레이블 컨트롤에서 텍스트의 일부를 강조 표시/선택할 수 있습니까?나는 RTF 텍스트 상자 컨트롤로 가능하다는 것을 알고 있지만 레이블의 많은 인스턴스를 만들어야 하기 때문에 해당 컨트롤을 사용하면 오버킬이 발생할 수 있습니다.

Windows 양식 레이블에서 텍스트를 선택할 수 있습니까? - 아니요. 최소한 레이블을 무시하지 않고는 쉬운 방법이 없습니다.도장 방법)

이를 위해 텍스트 상자를 쉽게 변경할 수 있습니다.

TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
TextBox1.Multiline = True; // If needed

안 믿어요?여기 당신을 위한 예가 있습니다.

여기에 이미지 설명 입력

옵션 2(레이블 텍스트 복사만 활성화하려는 경우)

레이블을 두 번 클릭하면 텍스트가 클립보드에 복사됩니다.기본 winforms Label 기능입니다.원하는 경우 도구팁 컨트롤을 추가하여 사용성을 향상시킬 수 있습니다.

여기에 이미지 설명 입력

레이블을 두 번 클릭하면 텍스트가 클립보드에 복사됩니다.이제 Windows Forms 레이블의 기본 동작입니다.

발라가 대답한 것처럼:

"BorderStyle이 없음으로 설정되고 Readonly가 true 및 Backcolor로 설정된 TextBox를 사용하여 컨테이너와 일치시킵니다."

텍스트 문자열이 매우 긴 경우WidthTextBox모든 텍스트를 표시하기에는 충분하지 않습니다. 그러면 다음을 설정할 수 있습니다.Width의 재산.TextBox모든 텍스트를 표시합니다.

올바른 번호를 알아야 할 경우Width그러면 당신은 그것을 사용할 수 있습니다.MeasureString의 방법Graphics이를 위하여다음에서 인스턴스를 가져올 수 있습니다.CreateGraphics()의 방법Control(TextBox이 경우).

첫 번째 매개변수는 TextBox의 Text이고 두 번째 매개변수는 TextBox의 Font입니다.이 함수는 반환됩니다.SizeF구조의이 속성의 Width 속성만 필요합니다. 다음을 사용하여 정수로 변환합니다.(int)size.Width또는(int)Math.Round(size.Width).

전화하는 것을 잊지 마세요.Dispose()더 이상 필요하지 않기 때문에 그래픽 인스턴스의 메서드입니다.


이 모든 과정을 수행할 기능을 직접 작성할 수 있습니다.

static void SetText(TextBox textBox, string str)
{
   Graphics graphics = textBox.CreateGraphics();
   SizeF size = graphics.MeasureString(str, textBox.Font);
   graphics.Dispose();
   textBox.Width = (int)Math.Round(size.Width);
   textBox.Text = str;
}

사용TextBox와 함께BorderStyle로 설정한.None그리고.Readonly로 설정한.true컨테이너의 색상과 일치하는 백컬러를 선택합니다.

아니요, Windows 양식 레이블에서 텍스트를 선택할 수 없습니다.대신 읽기 전용 텍스트 상자를 사용할 수 있습니다.

레이블에서 텍스트의 일부를 강조 표시할 수 없습니다.그러나 이미지를 사용하여 레이블로 설정할 수 있습니다.이 레이블의 텍스트가 정적인 경우 이미지 속성.

이 질문이 레이블 텍스트의 일부를 선택하는 것에 관한 것이라는 것을 알지만, 텍스트는 최종적으로 클립보드에 배치되어야 한다고 생각합니다.

따라서 전체 텍스트를 복사하는 것이 괜찮다면 다음과 같이 설정합니다.Click텍스트를 클립보드에 복사하는 레이블의 이벤트:

myLabel.Click += new System.EventHandler(MyLabel_Click);

// ...

private void MyLabel_Click(object sender, EventArgs e)
{
   Clipboard.SetText(myLabel.Text);
}

언급URL : https://stackoverflow.com/questions/7748137/is-it-possible-to-select-text-on-a-windows-form-label