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

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

  1. Villiya

    Villiya Гость

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

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

    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
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Нужно либо инициализировать переменные при объявлении:
    Код (Text):
    double xmin = 0.0, xmax = 0.0, zmin = 0.0, zmax = 0.0, zf = 0.0;
    , либо предусмотреть в switch ветку default:
    Код (Text):
    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, что не нравится компилятору.
     
  3. Villiya

    Villiya Гость

    большое спасибо!
     
Загрузка...

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