Я не очень хорош в C #, я просто не понимаю логику. Но В.Б. Я, кажется, понимаю лучше, так как это кажется гораздо более логичным. Удовольствие для меня.
Итак, я столкнулся с чем-то, что вообще не является проблемой в VB, получая доступ к элементам управления в форме, отличной от той, в которой вы сейчас находитесь.
В VB, если я хочу установить состояние кнопки, скажем, в Form2. Я просто набираю следующее:
Form2.Button1.Text = "Text"
В C # я не могу этого сделать. Зачем? Там должно быть довольно веская причина для этого права?
Изменить: Итак, если бы у меня был этот код, как бы выглядел, чтобы иметь возможность доступа к элементам управления в другой форме?
if (!AsioOut.isSupported())
{
SoundProperties.radioButtonAsio.Enabled = false;
SoundProperties.buttonControlPanel.Enabled = false;
SoundProperties.comboBoxAsioDriver.Enabled = false;
}
else
{
// Just fill the comboBox AsioDriver with available driver names
String[] asioDriverNames = AsioOut.GetDriverNames();
foreach (string driverName in asioDriverNames)
{
SoundProperties.comboBoxAsioDriver.Items.Add(driverName);
}
SoundProperties.comboBoxAsioDriver.SelectedIndex = 0;
}
Только что попытался добавить это "SoundProperties SoundProperties = new SoundProperties ();
И я получаю доступ к элементам управления. Но нужно ли добавить этот бит кода в обе части этого оператора IF? Похоже, что я делаю, но тем не менее, добавление этой строки в последнюю часть этого кода ничего не делает и дает мне сообщение об ошибке:
«Локальная переменная с именем« SoundProperties »не может быть объявлена в этой области, поскольку она придала бы другое значение« SoundProperties », который уже используется в« дочерней »области для обозначения чего-то другого» * 1015 *
Удаление строки дает мне следующую ошибку:
"Ссылка на объект требуется для нестатического поля, метода или свойства 'NAudio.SoundProperties.comboBoxAsioDriver'"
Вот код после добавления этих строк в двух местах:
if (!AsioOut.isSupported())
{
SoundProperties SoundProperties = new SoundProperties();
SoundProperties.radioButtonAsio.Enabled = false;
SoundProperties.buttonControlPanel.Enabled = false;
SoundProperties.comboBoxAsioDriver.Enabled = false;
}
else
{
// Just fill the comboBox AsioDriver with available driver names
String[] asioDriverNames = AsioOut.GetDriverNames();
foreach (string driverName in asioDriverNames)
{
SoundProperties SoundProperties = new SoundProperties();
SoundProperties.comboBoxAsioDriver.Items.Add(driverName);
}
SoundProperties SoundProperties = new SoundProperties();
SoundProperties.comboBoxAsioDriver.SelectedIndex = 0;
}