2014-04-22 3 views
0
namespace WindowsFormsApplication1 
{ 


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

     private void button1_Click(object sender, EventArgs e) 
     { 
      Authenticator at = new Authenticator(); 
      at.validate(); 
     } 
    } 

    public class Authenticator 
    { 
     private int num; 

     public bool validate() 
     { 
      if (textBox1.Text == num.ToString()) // problem #1 
      { 
       ListBox.Items.Add("Valid"); // problem #2 
      } 
     } 
    } 
} 

안녕하세요.C# 클래스의 텍스트 상자에 액세스 하시겠습니까?

위의 코드에서 알 수 있듯이 위의 단순화 된 예제와 같이 작동중인 winforms에 액세스하려면 사용자 정의 클래스가 필요한 응용 프로그램을 작성하고 있습니다. 나는 C#에 익숙하지 않으므로 내 무지를 용서해주십시오.

텍스트 상자의 데이터에 액세스 한 다음이를 비교하고 두 문자열이 동일한 경우 목록 상자를 업데이트하려면 authenticator 클래스가 필요합니다. 이 작업을 수행하는 간단한 방법이 있습니까?

답변

2

어때?

public bool validate(string text) 
{ 
    return (text == num.ToString()); 
} 

다음과 같이 코드에서 호출하십시오. 가능한 한 재사용 가능한 코드를 만들어야합니다. 즉, 양식의 특정 컨트롤 인스턴스에 대한 참조가 항상 최상의 디자인이 아님을 의미합니다.

if (at.validate(textBox1.Text)) 
{ 
    ListBox.Items.Add("Valid"); 
} 
3

논리에서 GUI 분리를 유지하는 것이 가장 :

내가 귀하의 게시물에서 언급 할 수
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Authenticator at = new Authenticator(); 
     if (at.validate(textBox1.Text)) { 
      ListBox.Items.Add("Valid"); 
     } 
    } 
} 

public class Authenticator 
{ 
    private int num; 

    public bool validate(string s) 
    { 
     if (s == num.ToString()) 
     { 
      return true; 
     } 
     return false; 
    } 
} 
0

미안 해요, 난 충분히 평판이 없습니다.

다른 양식의 문자열에 액세스하기 전에 양식을 가져 오는 것과 비슷한 문제가있었습니다.

내 경우에는 정적 인 문자열을 만들어야했습니다. 텍스트 상자에서도 동일한 작업을 수행하십시오.

public static TextBox textBox1; 
public Form1() 
관련 문제