1: 在program.cs 的程序如下:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
/// frmMain frmMain;
//只运行一个实例
bool createNew;
Mutex m = new Mutex(true, "Newzjh", out createNew);
if (createNew)
{
Fromlogo lfrm = new Fromlogo();
无需在 之前 定义 /frmMain formMain=new frmMain() ;
lfrm.ShowDialog();//显示登录窗体
if (lfrm.DialogResult.Equals(DialogResult.OK))
{
Application.Run(new frmMain());
m.ReleaseMutex();
}
}
这样做得好处是不用在logofrom中创建主窗体,也无需在引导窗体打开之前就定义 主窗体
2:logofrm
增加一个 button : btnOK ,设置为隐藏属性 , 并在 logofrm属性正 将acceptbutton 设置为 btnOK
或者 在from 的 load 事件里用 this.acceptbutton=btnok;
增加一个timer 间隔设置为 50
3: logofrm 代码
public partial class Fromlogo : Form
{
// Sunisoft.IrisSkin.SkinEngine se = null;
public Fromlogo()
{
InitializeComponent();
this.BackgroundImage = Image.FromFile(Application.StartupPath + @"//imG//logn.jpg");
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
if (this.Opacity > 0.4)
{
this.Opacity = this.Opacity - 0.008;
}
else
{
btnOK_Click(null, null);
}
}
catch (System.Exception ex)
{
NewCall.baseClass.EXcep.WriterExcp(ex);
}
}
private void Fromlogo_Load(object sender, EventArgs e)
{
timer1.Enabled = true; //打开定时器
}
private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
private void Fromlogo_Click(object sender, EventArgs e)
{
btnOK_Click(null, null); ///显示 logo的时候任意点击图片 就立即转向 主程序
}
private void Fromlogo_FormClosing(object sender, FormClosingEventArgs e)
{
}
}
4:心得
其实作为引导窗体的背景图片完全可以放进资源中,这样就无需再打开关闭文件了