2016-04-02 2 views
1

У меня есть 2 кнопки, Подключиться и Отправьте команду. В первой кнопке я создаю соединение с моим сервером и во второй отправке команды. Коды, как показано ниже:Ошибка при использовании sharpSSH в C# для нескольких кнопок

public void button1_Click(object sender, EventArgs e) 
{ 
     SshExec shell = new SshExec("hostname", "username", "password"); 
     shell.Connect(); 
} 

public void button2_Click(object sender, EventArgs e) 
{ 
     shell.RunCommand("ls"); 
} 

Теперь ошибка в "shell.RunCommand (" LS ");" Я получаю «Обозначение« shell »не содержится в текущем контексте». Я новичок в C# (всего 2 дня) и не имею большой идеи, поэтому, пожалуйста, если кто-то может помочь. То, что я ожидаю, не является ошибкой, и команда должна быть правильно отправлена ​​на терминал при нажатии второй кнопки. В конце жаль плохого форматирования кода, пожалуйста, сообщите мне, если требуется какая-либо дополнительная информация.

+0

Ваша переменная 'shell' является локальным по отношению к первому способу. Это не существует вне его. Переместите объявление на уровень класса. –

+0

Спасибо Сами за предложение, но из-за некоторых других ограничений я не могу переместить его в класс. Есть ли другой способ, с помощью которого я могу сделать эту переменную доступной для всех? –

+1

Объясните, что это за ограничения. Потому что это правильный способ сделать это. Конечно, вы можете играть с одиночными играми, но это очень плохой дизайн. –

ответ

0

Прямо сейчас, вы объявляете переменную shell внутри метода button1_Click. Это означает, что только этот метод может «видеть» переменную и использовать ее.

Для того, чтобы оба метода кнопки использовали переменную, она должна быть объявлена ​​вне/выше на уровне класса.

Попробуйте это:

private SshExec shell; 

public void button1_Click(object sender, EventArgs e) 
{ 
     shell = new SshExec("hostname", "username", "password"); 
     shell.Connect(); 
} 

public void button2_Click(object sender, EventArgs e) 
{ 
     shell.RunCommand("ls"); 
} 
Смежные вопросы