Условно показать / скрыть элементы формы Windows - PullRequest
2 голосов
/ 17 марта 2012

Я пытаюсь создать простое приложение Windows Form, которое будет отображать различные параметры в зависимости от значений предыдущих элементов - например, у меня есть четыре переключателя в верхней части формы, каждый из которых отображает и скрывает элементы, а также различные другие элементы. внутри формы - по сути, делая несколько форм в одной.

Я настроил это в большом условном выражении (это только небольшая часть, но все похоже):

private void Payment_Load(object sender, EventArgs e)
  {
            if (rdoMultChoice.Checked)
            {

                lblGroupBox1_MC.Visible = true;
                lblGroupBox1_FITB.Visible = false;
                lblGroupBox1_TF.Visible = false; 
             // etc...
            }
            else if (rdoFillInBlank.Checked)
            {
                lblGroupBox1_MC.Visible = false;
                lblGroupBox1_FITB.Visible = true;
                lblGroupBox1_TF.Visible = false;
             // etc...
            }

Проблема в том, что когда я запускаю приложение, форма полностью игнорирует эти утверждения и, кажется, просто делает все мои элементы видимыми.

http://msdn.microsoft.com/en-us/library/754w18dd.aspx

Эта ссылка похожа на мои потребности. Я пытался приспособить это к моей ситуации, но это, казалось, не работало (не могу гарантировать, что я сделал это правильно ...).

Похоже, это должно быть действительно простым делом, но я новичок в C # и только начал использовать его на этой неделе - задание для класса CS. Предполагается, что всего за 15 недель мы будем развивать «экспертизу» на 13 языках! Благодаря очень небольшому количеству ресурсов, предоставленных университетом, пока что единственный опыт, который я приобрел, - это поиск документации и переполнение стека! :)

Ответы [ 3 ]

3 голосов
/ 17 марта 2012

Первое, что я хотел бы сделать, это поставить точку останова в вашем коде:

private void Payment_Load(object sender, EventArgs e)
{
   if (rdoMultChoice.Checked)  // <-- Put breakpoint here.

Вы хотите знать, выполняется ли Payment_Load.

Далее, после того как вы увереныэто выполняется, проверьте ваш код, чтобы увидеть, есть ли что-то, что может изменить видимость метки.это может быть другой фрагмент кода, который изменяет настройку .Visible.

1 голос
/ 17 марта 2012

Фактически присвойте всем видимым свойствам вашего элемента управления значение false и снова сделайте их видимыми в Form_Load ().

Поскольку при загрузке формы все элементы управления инициализируются и их состояние изменяется.

1 голос
/ 17 марта 2012

Возможно, вам нужно добавить слушателя к вашему элементу управления. Как это:

rdoMultChoise.CheckedChanged += Payment_Load;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...