Amar chand123 Ответов: 3

Как скрыть другую кнопку winform по текущей кнопке формы


я хочу, когда я нажимаю свою первую кнопку формы, а затем открываю свою вторую форму в виде диалогового окна, а в форме DilogBox Button1 скрывается

я стараюсь в первом классе
public Status(Form1 _f1)
        {
            InitializeComponent();
            this.f1 = _f1;
        } 

Form1 f1;

private void Open_Click(object sender, EventArgs e)
        {
            Form1 dlg1 = new Form1(this);
            dlg1.ShowDialog();
            f1.button1.Visible = false;
        }
но когда я нажимаю кнопку Открыть, моя вторая форма открыта, но Button1 все еще видна, но я хочу, чтобы моя вторая форма не показывалась, когда я открываю свою вторую форму, нажав кнопку "Открыть".

Что я уже пробовал:

во втором классе
public Form1(Status _f3)
        {
            InitializeComponent();
            this.f3 = _f3;
        }

        public static string setvaluefortext1 = "";

        Status f3;


private void button1_Click(object sender, EventArgs e)
        {
            if (txtName.Text.Trim() == string.Empty)
            {
                this.Close();
            }
            else
            {
                
            }
        }

3 Ответов

Рейтинг:
2

Xanith

Ваш способ Open_Click является вызовом метода showdialog перед установкой свойства visible кнопки. ShowDialog является модальным, что означает, что код для установки свойства Visible не будет вызван до тех пор, пока вторая форма не будет закрыта.


Рейтинг:
12

phil.o

Вы можете изменить конструктор Form1 чтобы принять логическое значение, устанавливающее видимость кнопки.
Статус:

public Status(Form1 _f1)
{
   InitializeComponent();
} 

Form1 f1;

private void Open_Click(object sender, EventArgs e)
{
   f1 = new Form1(this, false);
   f1.ShowDialog(this);
}

Форма 1:
public Form1(Status _f3, bool buttonIsVisible)
{
   InitializeComponent();
   this.f3 = _f3;
   this.button1.Visible = buttonIsVisible;
}

// ...


Amar chand123

Спасибо, сэр Фил.

phil.o

Пожалуйста. Пожалуйста, отметьте свой вопрос как ответ, если ваша проблема решена.

Рейтинг:
0

CHill60

Вы не передаете никакой информации между формами. В этом случае информация, которую вы должны передавать, является видимым свойством элемента управления в форме. Это не так просто, как просто попытаться установить значение вне формы, содержащей элемент управления.

Взгляните на серию советов @Original-Griff по этому вопросу, начиная с Передача информации между двумя формами, Часть 1: Родитель-Ребенок[^] (также содержит ссылки на два других)


Amar chand123

я просто начинаю программировать и начинаю учиться из интернета и из своих прошлых ошибок, так что не могли бы вы объяснить мне простым способом, как я решаю эту проблему просто немного помочь

CHill60

На самом деле советы, которые я предоставил по ссылке, объясняют несколько простых способов сделать это. Я вижу, что Фил.о опубликовал явный ответ. Эта концепция передачи чего-то в форму в конструкторе была самой первой вещью, которую предложила статья. Поскольку вы говорите, что пытаетесь учиться у интернета (не обязательно хорошая тактика), то я все же рекомендую эту серию советов

Amar chand123

Сэр Chill60, я прочитал вашу общую ссылку и скачал исходный код проекта для изучения и пытаюсь учиться, и благодарю вас за то, что вы поделились и ответили на мой вопрос