C# Получение Данных Из Формы (switch Для Радиобаттонов)

  • Автор темы Villiya
  • Дата начала
V

Villiya

#1
Уважаемые программисты, помогите пожалуйста разобраться с получением данных из формы на которой находятся 2 группы радиобаттонов по 3 шт в каждой и 3 текстбокса. в зависиости от того какой радиобаттон нажат (проверяется с помощью switch), переменным будет присваиваться некоторе значение и эти переменных нужно использовать в дальнейшем коде, но они остаются "видимыми" только в рамках switch, когда же я их пытаюсь использовать дальше выдается ошибка, что переменной не присвоено значение, подскажите как быть?

помогите пожалуйста, а то я уже голову сломала не знаю что и делать!
Код:
//пример проекта прилагается

public void ch()
{
double[,] z, x, y;
int LL, NN;
double xmin, xmax,zmin, zmax, zf;//некоторые переменные
switch (VisPar)//проверка на то какой радиобаттон нажат
{
case RadioCheckStatus.rbQ:	 
zmax = 0;
zmin = 100;
break;
case RadioCheckStatus.rbP:
case RadioCheckStatus.rbT:
zmax = -1e16;
zmin = 1e16;
break;

}
switch (VisSurf)//проверка на то какой радиобаттон нажат
{
case RadioCheckStatus.rbA:
LL = Int32.Parse(N0.Text);//считывание из текстбоксов
NN = Int32.Parse(M0.Text);

break;
case RadioCheckStatus.rbB:
LL = Int32.Parse(L0.Text);
NN = Int32.Parse(N0.Text);
break;
case RadioCheckStatus.rbC:
LL = Int32.Parse(L0.Text);
NN = Int32.Parse(M0.Text);
break;
}
//объявление массивов размер кот. определяется в зависимости от 
//нажатого радиобаттона в switch (VisSurf)
//если данные массивы объявить в switch (VisSurf), то они не видны в дальнейшем коде,
//если объявлять вот так, то для них не видны LL и NN
x = new double[LL + 1, NN + 1];
y = new double[LL + 1, NN + 1];
z = new double[LL + 1, NN + 1];

//*
//некоторый код в котором будет заполнение массивов и работа с ними 
//и переменными zmax и zmin, например, 
//if (zf > zmax && zf <= 1e14) zmax = zf;
//if (zf < zmin) zmin = zf;
//значения zmin и zmax должны браться из switch (VisPar)
//*

MinMaxFloat2D(x, LL, NN, out xmin, out xmax);
ImageCalc(NN, LL, x, y, z);
}
public void MinMaxFloat2D(double[,] x, int LL, int NN, out double xmn, out double xmx)
{
xmx = xmn = x[0, 0];

for (int i = 0; i < LL; i++)
for (int j = 0; j < NN; j++)
{
if (xmn > x[i, j]) xmn = x[i, j];

if (xmx < x[i, j]) xmx = x[i, j];

}
форма.JPG Посмотреть вложение WindowsFormsApplication1.rar
 

Вложения

LuMee

Well-known member
02.05.2006
477
0
#2
Нужно либо инициализировать переменные при объявлении:
Код:
double xmin = 0.0, xmax = 0.0, zmin = 0.0, zmax = 0.0, zf = 0.0;
, либо предусмотреть в switch ветку default:
Код:
switch (VisPar)//проверка на то какой радиобаттон нажат
{
case RadioCheckStatus.rbQ:	 
zmax = 0;
zmin = 100;
break;
case RadioCheckStatus.rbP:
case RadioCheckStatus.rbT:
zmax = -1e16;
zmin = 1e16;
break;
default:
zmax = zmin = ...;// какое-то значение по умолчанию
break;
}
Идея в том, что в приведенном вами коде значения переменных xmin, xmax и т.п. может остаться неопределенным, если не выполнится ни одно из условий в switch, что не нравится компилятору.