2015-09-29 4 views
-6

Мне нужна помощь с формой окна. Я создал несколько окон, и я пытаюсь связать их. прямо сейчас form4 имеет две кнопки, которые я хочу связать с form2 и form3. Моя первая кнопка на form4 не загружает форму form2, она просто перезагружается, когда я нажимаю кнопку. код у меня есть для кнопки:Как изменить начальную форму в C#

private void button1_Click(object sender, EventArgs e) 
     { 
      Form2 f2 = new Form2(); 
      f2.Show(); 
     } 

на form2 У меня есть событие нагрузки

private void form4_load(object sender, EventArgs e) 
    { 
     var f4 = new Form4(); 
     this.Close(); 
     f4.ShowDialog(); 

    } 

это то, что Button1_Click выглядит на form2:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form1.setPlayerNames(p1.Text, p2.Text); 
     this.Close(); 

    } 
+0

Вы не предоставили достаточно кода для воспроизведения проблемы. Предположительно, ваша вторая форма делает что-то, что мешает ему показывать. – Servy

+0

Я хочу, чтобы форма4 была моей стартовой формой и хочу, чтобы она ссылалась на form2 и form3 – user3495247

+1

, если вы хотите изменить стартовую форму, перейдите в program.cs и измените ее на это. Application.Run (new Form4()) – Arash

ответ

0

Вы имеют мало проблем. Первые из них является, как работает модальная форма, вам придется сделать это следующим образом:

void form4_load(object sender, EventArgs e) 
{ 
    var f4 = new Form4(); 
    this.Close(); // close first 
    f4.ShowDialog(); 
} 

иначе this.Close не происходит, пока вы не закроете f4.

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

Application.Run(new Form1()); 

вы должны изменить его на что-то вроде

var f1 = new Form1(); 
f1.ShowDialog(); 

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

+0

Я не знаю, что не так, кнопка на форме 2 не загрузит форму 1 – user3495247

0

Вы должны вызвать форму на Program.cs, как это:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form4()); 
    } 
} 

И оставить событие нагрузки на form2 пустые, как это;

private void form4_load(object sender, EventArgs e) 
{ 

} 

Вы уже загрузили form4 на старте, нет необходимости, чтобы загрузить его снова

0

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

По нажав кнопку, вы создаете форму типа Form2.

Когда Form2 заканчивает загрузку, он создает новую форму типа Form4 и показывает ее.

Так поясню, что происходит:


Form4 создается.

Пользователь нажал Button1 по телефону Form4.

Button1 создает новый Form2 и показывает его.

Form2 загружает, создает новый Form4 и показывает его.


Вот почему вы видите, что Form4 «перезагружает» себя.

Если вы удалите строку, показывающую Form4 в событии загрузки Form2, вы увидите, что Form2 создается.

0
private void Form1_Load(object sender, EventArgs e) 
{ 
    Hide(); 
    new Form2().Show(); 
} 

короткий путь, удалить Hide();, если вы не хотите, чтобы скрыть form1.

Смежные вопросы