2013-12-19 1 views
8

나는 C#으로 사전을 쓰고 있는데 정의를 보여주기 위해 텍스트 상자를 사용하고있다. 분명히, ReadOnly 속성을 true로 설정해야하지만, 그렇게하면 텍스트의 색을 변경할 수 없습니다. 그러나 글꼴 변경 잘 작동합니다. 어떻게해야합니까? 그것이 사실 인 경우읽기 전용 텍스트 상자의 텍스트 색을 어떻게 변경합니까?

은이 코드를 사용하고 읽기 전용 속성이 false 인 경우 색상을 설정하면 완벽하게 잘 작동하지만 변경되지 않습니다 해요 :

private void button5_Click(object sender, EventArgs e) 
    { 
     FontDialog fd = new FontDialog(); 
     fd.ShowColor = true; 
     if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      textBox3.Font = fd.Font; 
      textBox3.ForeColor = fd.Color; 
     } 
    } 
+0

.enabled = false로 설정하려고 했습니까? –

+0

스크롤을 사용하지 않으면 스크롤 기능이 작동하지 않습니다. 따라서 아무런 사용법도 없습니다 :/ – Amen

+0

이것은 실제로 MSDN에서 문서화되었으므로 (ReadOnly 컨트롤에서는 색이 변하지 않습니다). 그러나 해결 방법 (사용자가 수락 한 대답)은 문서화되어 있지 않습니다 ... 여기를 제외하고. – davidbak

답변

32

읽기 전용 텍스트 상자의 ForeColor 속성 어떤 이유로 BackColor 속성에 결혼했다. 당신이 BackColor 속성을 "간질"경우에 따라서는 그 후 ForeColor 속성을 설정합니다 : LarsTech 제안에

FontDialog fd = new FontDialog(); 
fd.ShowColor = true; 
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { 
    textBox3.Font = fd.Font; 
    textBox3.BackColor = textBox3.BackColor; 
    textBox3.ForeColor = fd.Color; 
} 
+0

글쎄요. 그것은 합리적인 아키텍처입니다. 응. –

+0

신성 모호함, 배트맨! 그것은 분명하지 않습니다! (이상하게도, 이것은 ResetForeColor를 위해서 필요하지 않습니다.) – davidbak

+0

나는 아직도 당황 스럽습니다. 어떻게 알아낼 수 있었습니까? – Rajiv

1

덕분에 나는 다시 색상을 설정했다 다음이이 방법을 다시

로 설정 그것은 나를 위해 일한 :

tb.BackColor = Color.Black 
    tb.ForeColor = Color.Black 
    tb.BackColor = Color.White 
1

, 수행해야 할 모든 인 데 ForeColor 이미 (아마도 디자이너) 원하는 색으로 설정되어 가정 :

tb.BackColor = tb.BackColor; 

이렇게하면 앞쪽 색상이 마술로 트리거되고 수정됩니다. 이 코드 줄을 추가하는 이유를 설명하는 주석이 필요할 수도 있습니다.

+0

이상한,하지만 사실. NET 4.52. –

관련 문제