Form1 моего приложения - это страница входа, которую я хочу:
- показать на некоторых условиях
- скрыть и показать Form2 при некоторых условиях
Я могу скрыть / показать форму с помощью события нажатия кнопки, например,
private void button1_Click(object sender, EventArgs e)
{
Form2 f2= new Form2();
f2.Show();
this.Hide();
}
но тот же метод не работает для Form1_Load.
Я пробовал первый пример в этой теме,
Program.cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}
Form1
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2= new Form2();
f2.Show();
this.Hide();
}
Но он не показывает ни Form1, ни Form2, и я не понимаю, как это могло быть. Во втором примере я не могу понять, как я могу реализовать, а следующие результаты Google запутывают еще больше.
Пожалуйста, помогите, я застрял на этом на 2 часа.
3 ответа
В последней строке в program.cs вы должны ввести new Form1()
в скобках. Итак, ваш код program.cs выглядит следующим образом:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
C # не может скрыть форму в form_load evant Видимо. Чтобы решить проблему Hide, вы можете использовать таймер и скрыть форму в событии тика. то есть:
Timer timer = new Timer();
private void timerTick(object sender, EventArgs e)
{
timer.Enabled = false;
this.Hide();
}
private void Form1_Load(object sender, EventArgs e)
{
timer.Tick += new EventHandler(timerTick);
timer.Interval = 10;
Form2 frm = new Form2();
frm.Show();
timer.Enabled = true;
}
Это работает. Я это тестировал.
Надеюсь, это будет полезно.
Почему бы вам не изменить порядок ваших форм? Начните с основной формы в основном методе.
Application.Run(new Form2());
Теперь в конструкторе Form2 вызовите форму входа с помощью ShowDialog и установите результат входа в глобальную переменную внутри Form2.
public class Form2:Form
{
private bool _isValidated = false;
public Form2()
{
InitializeComponent();
// Add here the conditions to check if you don't want to
// run the login process...
// if(loginNotRequired)
// _isValidated = true;
// else
using(Form1 fLogin = new Form1())
{
// This blocks until the user clicks cancel or ok buttons
DialogResult dr = fLogin.ShowDialog();
if(dr == DialogResult.OK)
_isValidated = true;
}
}
Теперь в событии Form.Load проверьте статус вашего логина и закройте форму 2, логин не прошел
private void Form2_Load(object sender, EventArgs args)
{
if(!_isValidated)
this.Close();
else
.....
}
Здравствуйте, вы можете использовать это
private void button1_Click(object sender, EventArgs e)
{
Form2 f2= new Form2();
if(condition==true)
{
this.Hide();
f2.ShowDialog();
this.Close();
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.