c#技术性问题?
在C#中,新建第一个窗体(frmAppliction)的时候就是默认的运行窗体,比如说在今后修改的过程中想在前面加入一个用户登录(frmLogin)的界面,就是说如果frmLogin验证通过了才可以进入下一个界面(frmAppliction),该怎么将frmLogin改成一点击运行就出现的界面呢?
------解决方案--------------------static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmAppliction());
}
}
program 中替换红色部分为你要启动的窗体就行了。
------解决方案--------------------static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());
}
}
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
}
private void loginButton_Click(object sender, EventArgs e)
{
if(Validate()){
MainForm mainForm = new frmAppliction();
Visible = false;
frmAppliction.Show();
}
}
private void loginCancelButton_Click(object sender, EventArgs e)
{
Application.Exit();
}
private bool Validate() {
// Validating...
}
}
------解决方案--------------------[STAThread]
static void Main()
{
Application.Run(new frmAppliction());
}
把这段代码从frmAppliction.cs中剪切出来
放到frmLogin.cs中
并修改为
[STAThread]
static void Main()
{
Application.Run(new frmLogin());
}
都是从main函数开始执行的,你在main函数中想让哪个窗体显示就new哪个。
------解决方案--------------------一般不直接改Application.Run(new frmAppliction());
因为启动窗体一关闭的话,应用程序也关闭了,登陆只是一个验证和读取权限,资料的过程。
所以最好是在主窗体的Load或Shown里面写
LoginForm login = new LoginForm();
login.ShowDialog();//注意是ShowDialog
在Load里面写就是显示登陆窗体,但不显示主窗体。
在Shown里面写就是显示了主窗体,再弹出登陆窗体。
------解决方案--------------------推荐两种不同的实现方法。
1、楼上已经有人说了,可以在Main函数里修改优先启动的窗体。
2、可以在主窗体运行的时候先启动登录窗体,并把自己隐藏起来,等登陆成功后在显示主窗体。这样的有点就是主窗体可以自由地选择和控制是否要启动登录窗体以及如何验证身份。
殊途同归,不同的设计基于实际的需求。
------解决方案--------------------工程下面有一个Program.cs文件,这个是启动调用的文件,修改这里的代码如下:
C# code
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsApplication20
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
bool createNew=false;
System.Threading.Mutex mutex = new System.Threading.Mutex(true, "WindowsApplication20", out createNew);
if (createNew)
{
frmLogin login = new frmLogin();
if (login.ShowDialog()== DialogResult.OK)
{
Application.Run(new Form1());
}
}
else