2017-05-22 12 views
0

다른 양식에서 사용할 수 있도록 voterid을 전역 변수에 저장하려면 어떻게해야합니까? 나는 투표자가 이미 투표했는지 확인하기 위해이 voterid을 사용할 것입니다.전역 변수에 저장하는 방법 C#

MessageBox.Show("Welcome!"); 
OleDbCommand comd1 = new OleDbCommand(); 
comd1.Connection = connection; 
comd1.CommandText = "SELECT VoterID FROM tbl_voter where Uname='" + 
        txt_user.Text + "' and Pword='" + txt_pass.Text + "'"; 
voterid = Convert.ToString(comd1.ExecuteScalar()); 
MessageBox.Show(voterid); 

connection.Close(); 
connection.Dispose(); 

this.Hide(); 
vote form3 = new vote(); 
form3.ShowDialog(); 
+0

당신이 다루고있는 클래스에'public static' 속성을 만들 수 있습니다. 그런 다음 다른 양식에서'whateverclass.whateverproperty'를 참조하게됩니다. 그래도 훌륭한 OO 디자인이 아닙니다. 더 나은 해결책은 다른 양식 자체에 정보를 전달하거나 정보를 얻으려는 상대방에게 정보를 전달하는 것입니다. 정적 속성 솔루션은 "밀접하게 결합 된"상황을 만들어 내며 일반적으로 뺨을 때다. – itsme86

+0

많은 해결책이있는 매우 광범위한 질문입니다. 몇 가지 예를 들어 정적 클래스/메소드를 살펴볼 수 있습니다. –

+0

@ itsme86 대단히 감사합니다! – Theodore

답변

1

것은 우리가 윈도우에 대해 이야기하는 경우 것이 Forms 응용 프로그램에 의해 "세계"를 의미하는 "과정에서 공통적를,"당신은 static variable를 사용할 수 있습니다.

이 예제에서는 정적 변수를 보관하기위한 특수 클래스를 만들고 프로그램에서 사용할 수있는 하나의 필드와 속성을 선언하고 전체 프로세스에서 하나의 값만 보유합니다.

static class GlobalVariables 
{ 
    static private string LockObject = new Object(); 
    static private string _someVariable; 

    static public string SomeVariable 
    { 
     get 
     { 
      lock(LockObject) { return _someVariable; } 
     } 
     set 
     { 
      lock(LockObject) { _someVariable = value; } 
     } 
    } 
} 
+0

각 구성원마다 정적 키워드가 있어야합니까? –

+0

남자들은 너무 빨라요, 나는 타이핑 중이었습니다! 그래 너가 옳아. –

+0

잘못된 주문입니다! –

0

응용 프로그램 상태는 응용 프로그램 상태 개체에 속하는 : 프로그램이 멀티 스레드 경우, 다음과 같이 주변의 정적 변수를 중요한 부분을 넣어 좋은 생각이 될 수 있음을

static class GlobalVariables 
{ 
    static public string SomeVariable { get; set ; } //As a property 
    static public string SomeOtherVariable;   //As a field 
} 

주 . WinForms 애플 리케이션은 이들 중 하나를 가지고 있지 않지만 AppState 클래스를 생성하고 인스턴스를 Program 클래스의 정적 속성에 넣을 수 있습니다. 그런 다음 AppState의 강력한 유형 속성으로 정의하고 프로그램의 어느 곳에서나 참조 할 수있는 전역 상태를 정의 할 수 있습니다. Program.AppState.MyGlobalStronglyTypedValue

그런 다음 앱 상태를 유지해야하는 경우 AppState 클래스에 (de) 직렬화 논리를 추가 할 수 있습니다. .

+0

모든 전역 변수가 응용 프로그램 상태의 일부로 인식되어야하는지 확신하지 못합니다. –

+0

나는 그렇다. 변수는 상태를 유지합니다. _global_state가 아닌 경우 전역 변수에있는 이유는 무엇입니까? 마음에 오면 반례를 제공하십시오. –

+0

감사합니다 모두들, 정말 고마워요! – Theodore

관련 문제