2013-05-27 1 views
1

이 클래스 유효성 검사기는 WinForms 프로젝트의 모든 텍스트 상자의 유효성을 검사합니다. 어떻게해야할지 모르겠다. "유효하지 않은 텍스트 상자의 경계선을 바꿀 수 없다." 그래서 같은 클래스 "Validators"에서이 LoginForm_Paint 이벤트를 사용했습니다. 나는 그것을 사용하는 방법을 모른다. 어쩌면 처음부터 거기에 있으면 안되며, 어쩌면 그것을 사용하는 방법을 모른다. 누군가 나를 기쁘게 도와 줄 수 있습니까?사각형을 텍스트 상자 테두리로 그리기

public void LoginForm_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics graphics = e.Graphics; 
    Pen redPen = new Pen(Color.Red); 
} 

public bool ValidateTextBoxes(params TextBox[] textBoxes) 
{ 
    foreach (var textBox in textBoxes) 
    { 
     if (textBox.Text.Equals("")) 
     { 
      graphics.DrawRectangle(redPen, textBox.Location.X, 
          textBox.Location.Y, textBox.Width, textBox.Height); 

      return false; 
     } 
    } 

    return true; 
} 

를하지만 그런 식으로 작동하지 않습니다

public void LoginForm_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics graphics = e.Graphics; 
    Pen redPen = new Pen(Color.Red); 
} 

public bool ValidateTextBoxes(params TextBox[] textBoxes) 
{ 
    foreach (var textBox in textBoxes) 
    { 
     if (textBox.Text.Equals("")) 
     { 
      textBox.BackColor = Color.Red; 

      return false; 
     } 
    } 

    return true; 
} 

내가합니다 (LoginForm에서처럼) 이런 식으로 사용하고 싶었다. Graphics graphics = e.Graphics;을 만든 인스턴스를 인식하지 못합니다. 이 방법으로 당신이 그것을에서 사용하는 외부에서 정의되기 때문에

+0

당신이 "그것은 그런 식으로 작동하지 않습니다"에 의해 무엇을 의미합니까? 특정 오류 메시지? – pascalhein

+0

"Graphics graphics = e.Graphics"라는 인스턴스를 인식하지 못합니다. 나는 질문을 편집했다. – Etrit

+0

Paint 이벤트에서 가져온 e.Graphics 객체를 저장할 수 없으며 나중에 사용할 수 있습니다. Paint 이벤트의 실행이 정지 한 후에 파기됩니다. 컨트롤 테두리를 다시 그리는 것은 나쁜 아이디어입니다. 대신 BackColor 사용을 고려하십시오. –

답변

1

개체 graphicsLoginForm_Paint에 로컬로 정의하고 ValidateTextBoxes에 사용되는 즉, "인식"하지 않습니다.

당신은 텍스트 상자의 그래픽 객체를 사용해야합니다 당신의 그림과 같습니다

public bool ValidateTextBoxes(params TextBox[] textBoxes) 
{ 
    foreach (var textBox in textBoxes) 
    { 
     if (textBox.Text.Equals("")) 
     { 
      Graphics graphics = textBox.CreateGraphics(); 
      graphics.DrawRectangle(redPen, textBox.Location.X, 
          textBox.Location.Y, textBox.Width, textBox.Height); 

      return false; 
     } 
    } 

    return true; 
} 
관련 문제