1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

Тема в разделе ".NET - программирование", создана пользователем Villiya, 17 дек 2011.

  1. Villiya

    Villiya Гость

    Репутация:
    0
    Уважаемые программисты, помогите пожалуйста разобраться с получением данных из формы на которой находятся 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];
    
    }
    C# Получение Данных Из Формы (switch Для Радиобаттонов) Посмотреть вложение WindowsFormsApplication1.rar
     
  2. LuMee

    LuMee Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Нужно либо инициализировать переменные при объявлении:
    Код:
    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, что не нравится компилятору.
     
Загрузка...

Поделиться этой страницей