Как использовать (приватную) переменную из другой функции? - PullRequest
0 голосов
/ 07 декабря 2018

Для полного контекста я работаю над WinForms, и, во-первых, у меня есть форма, отображающая все виртуальные машины, которые есть в моем диспетчере Hyper-V, со многими функциями, связанными с каждой кнопкой, которая вносит изменения в это представление данных.Вот как это выглядит:

enter image description here

(игнорируйте имена, все они - тестовые машины)

Итак, есть немногосиняя кнопка справа, которая читает «Snapshot VM», и она открывает новую форму, чтобы вы могли выбрать для нее имя, которое выглядит так:

enter image description here

Я хочу сохранить индекс, выбранный в главной форме (строка, которую вы щелкнули перед нажатием кнопки), чтобы я мог вызвать функцию snapshotVM из моей DLL, которая выглядит следующим образом:

public void snapshotVM(string id, string name)
        {
            if (name == "") powershellFunc("Get-VM | Where { $_.Id –eq ‘" + id + "’ } | Checkpoint-VM");
            else powershellFunc("Get-VM | Where { $_.Id –eq ‘" + id + "’ } | Checkpoint-VM -SnapshotName '" + name + "'");
        }

(powershellFunc просто принимает команды powershell и выполняет их, для пояснения)

Поэтому в основном мне нужно получить string id из одной формы и string name из другой или внутрита же форма получает приватную переменную из одной функции и использует ее в другой.Вот что я имею в виду:

enter image description here

Мне нужно использовать переменную index внутри кнопки ниже.Есть ли какой-нибудь способ «перенести» его туда?

Наконец, откуда мне вызывать функцию snapshotVM, если я вообще должен это делать, или есть какой-то обходной путь?Буду признателен за любую помощь, включая просьбу о разъяснении, потому что я чувствую, что это немного беспорядок, и я не объяснил правильно, но я буду ждать предложений для правок.

1 Ответ

0 голосов
/ 07 декабря 2018

Просто используйте приватную переменную в классе:

private string _index;
....
public NewSnapshotVM(...)
{
  ...
  _index = dgv.Rows[...];
}
...
pirvate void button1_Click(...)
{
  // use _index as much as you want
}
...