2013-07-13 3 views
1

사용자가 뭔가를 입력하면 레이블 속성에 저장됩니다. 나는 이것이 옳지 않다는 것을 안다. 어떤 이벤트를 사용해야하는 곳에서 사용하기 위해 사용자 입력을 기반으로 변수를 업데이트 할 수 있습니까?사용자 입력을 변수로 C# 창에 저장

이것은 내가 시도한 많은 것들 중 하나입니다. 나는 내가해야 할 일에 대한 해결책을 찾기 위해 올바른 검색어를 찾아 낼조차 수 없다.

namespace Words 
{ 
    public partial class formWords : Form 
    { 
    int x = 5; 
    int y = 50; 
    int buttonWidth = 120; 
    int buttonHeight = 40; 
    string fileList = ""; 
    string word = ""; 
    string wordFolderPath = @"C:\words\";// this is the variable I want to change with the dialog box below. 

    private void selectWordFolderToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     FolderBrowserDialog folder = new FolderBrowserDialog(); 
     if (folder.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      string folderPath = folder.SelectedPath; 
      formWords.wordFolderPath = folderPath; 
     } 
    } 

답변

2

wordFolderPath은 클래스에 공개 될 수있는 변수입니다 (단, 외부에서는 공개되지 않습니다). 즉, 클래스 내의 모든 것이 자유롭게 값을 읽고 쓸 수 있습니다.

당신의 구문에 관해서는, 당신은 변수 이름을 사용하거나 this.을 사용할 수 있습니다 : 내부 변수를 액세스 할 때 현재 클래스의 이름을 사용할 수 없습니다

private void DoAThing() 
{ 
    wordFolderPath = "asdf"; 
    this.wordFolderPath = "qwerty"; //these are the same 
} 

. formWords은 유형이 아니라 인스턴스입니다.

this을 사용하는 유일한 이점은 메서드 내에 정의 된 동일한 이름의 변수를 사용하는 것이 합법적이기 때문입니다. 이 키워드를 사용하면 수업의 구성원에 대해 이야기하고 있는지 확인할 수 있습니다.

+0

나는 그것이 그것이 훨씬 더 복잡하다고 생각했다. 고맙습니다. –

2

그냥 "는 말을 오류 목록에서 컴파일러 오류가 있었어야했는데,

또한 문제가 해결됩니다 wordFolderPath = folderPath;

또는 this.wordFolderPath = folderPath;

formWords.wordFolderPath = folderPath;

변경 객체 참조가 비 정적 필드, 메소드 또는 속성에 필요합니다 ... "

오류 목록을 볼 수없는 경우 확실히 켜야합니다.

관련 문제