2012-09-26 3 views
-3

어떻게하면 아래의 예외를 BOLD 및 텍스트 글꼴 RED로 반환 할 수 있습니까? "반환"의 표현 WMI 오류 ";"텍스트를 굵게 및 빨강으로 만드는 방법

private static string GetMOValue(ManagementObject mo, string name) 
     { 
      try 
      { 
       object result = mo[name]; 
       return result == null ? "" : result.ToString(); 
      } 
      catch (Exception) 
      { 
       return "***WMI Error***"; 
      } 
     } 

     private void cmbHdd_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      //try 
      //{ 
       ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '" + cmbHdd.SelectedItem + "'"); 
       foreach (ManagementObject moDisk in mosDisks.Get()) 
       { 
        //try 
        //{ 
        txtSystemName.Text = GetMOValue(moDisk, "systemname"); 
        txtType.Text = GetMOValue(moDisk, "MediaType"); 
        txtModel.Text = GetMOValue(moDisk, "Model"); 
        txtFirmware.Text = GetMOValue(moDisk, "FirmwareRevision"); 
..... 
+0

무엇 참조하는 것은 전적으로 UI 관심사이며 데이터를 표시하기 위해 사용하려는 컨트롤에 따라 달라집니다. 기본 WinForms 텍스트 상자를 사용하는 경우 글꼴을 굵게 표시하고 ForeColor를 빨간색으로 만들 수 있습니다. 또한 예외를 올바르게 처리하지 않고 모든 예외를 포착하는 것은 좋지 않습니다. –

+0

예외 자체에는 글꼴이 없습니다. 사용자가 이동하여 글꼴을 변경해야하는 곳입니다. – waldrumpus

+0

확인 - 의미가 있습니다. 텍스트 상자에 반환 된 "WMI Error"문자열을 강조 표시 할 수있는 경우가 더 많습니다 ... – lara400

답변

2

텍스트 상자는 웹 브라우저되지 않습니다 : 아래 그림과 같이

이 ... 텍스트 상자에 WMI 매개 변수를 반환하는 코드에서 나중에 사용됩니다. 장식, 색상 등이없는 단일 글꼴로 텍스트 표시를 지원합니다. 런타임시 텍스트 상자의 글꼴을 변경할 수 있습니다.

당신은이를 달성하기 위해 텍스트 상자의 TextChanged 이벤트를 처리 할 수 ​​있지만, 이것은 좋은 코드의 예되지 않습니다 :

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    Font defaultFont = SystemFonts.DefaultFont; 

    if(textBox1.Text.StartsWith("**") && textBox1.Text.EndsWith("**")) 
    { 
    textBox1.Font = new Font(defaultFont.FontFamily, defaultFont.Size, FontStyle.Bold); 
    textBox1.ForeColor = Color.Red; 
    // note: can't change text here as it will recursively trigger this handler 
    } 
    else 
    { 
    textBox1.Font = defaultFont; 
    textBox1.ForeColor = SystemColors.ControlText; 
    } 
} 

더 좋은 방법은 텍스트를 설정하는 간단한 방법을 가지고하는 것 및 텍스트 박스 속성.

soapbox : **이 문자는 ** 문자가 오류인지, 매우 추악하고 신뢰할 수 없는지 확인하기 위해이 양식을 검토합니다. 당신이해야 할 것은 당신이를 RichTextBox, 웹 브라우저 또는 장식적인 포맷을 지원하는 일부 사용자 지정 그려 컨트롤을 사용할 수 있습니다

Font defaultFont = SystemFonts.DefaultFont; 
try 
{ 
    textBox1.Text = GetMOValue(...); 
    textBox1.Font = defaultFont; 
    textBox1.ForeColor = SystemColors.ControlText; 
} 
catch(Exception ex) 
{ 
    textBox1.Text = "ERROR"; 
    textBox1.Font = new Font(defaultFont.FontFamily, defaultFont.Size, FontStyle.Bold); 
    textBox1.ForeColor = Color.Red; 
} 
// the Font and ForeColor properties are repeatedly set in case that previous 
// try had the different result (e.g. previous => error, current => OK, so 
// we need to reset the attributes of textbox 

같은 것을 가지고있다.

+0

이것은 정말로 좋다 - 내가 이것을 구현할 수 있는지 보자. 고마워요! – lara400

+0

아니, 실제로는 좋지 않아 :) 나는 몇 가지 메모를 추가했습니다, 의견을 참조하십시오. –

2

당신은 확인해야합니다, 메소드 반환 예외 여부 그렇다면, 변경 설정 글꼴 및 동적 텍스트 상자의 색상 :

표준 문자열 형식 (단지 인코딩)의 개념이 없다
textBox.ForeColor = Color.Red;  
textBox.Font = new Font(textBox.Font, FontStyle.Bold); 
관련 문제