2013-07-13 3 views
1

До сих пор, если пользователь вводит что-то, я сохраняю его в свойстве label. Я знаю, что это неправильно. Как я могу обновить переменную на основе пользовательского ввода для использования в зависимости от того, какое событие нужно использовать?Сохранение пользовательского ввода как переменной в форме C# windows

Это одна из многих вещей, которые я пробовал. Я даже не могу понять правильные условия поиска для google-решения для того, что мне нужно делать.

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

Просто изменение formWords.wordFolderPath = folderPath;

в wordFolderPath = folderPath;

или this.wordFolderPath = folderPath;

должны исправить вашу проблему

Кроме того, должна быть ошибка компилятора в списке ошибок говорят «An ссылка объекта требуется для нестатического поля, метода или свойства ... »

Если вы не видите свой список ошибок, обязательно включите его.

Смежные вопросы