Fri, September 3, 2004, 05:15 AM under
Whidbey |
VisualStudio
If you are not aware of the MyEvents functionality that VB2005 offers, check out a screenshot and short description
here.
The question is how to get the same support in C#. Well it all becomes pretty straightforward if you understand how MyEvents and the new startup model work in VB. I provided an exploration
here.
So, armed with that knowledge, in a new C# Windows Application do the following:
1. Add a reference to Microsoft.VisualBasic.dll
2. Replace all the code in Program.cs with the 35 lines of code given below
3. Form1.cs. This is the main form (you could put a button that throws an exception)
4. Add a form Form2.cs. This is the splash screen, no code needed.
5. Build in release mode and run from explorer.
Here is the code:
namespace WindowsApplicationCSusingVB{
public class MyApplication :
System.Windows.Forms.WindowsFormsApplicationBase{
public MyApplication():
base(System.Windows.Forms.AuthenticationMode.Windows){
base.NetworkAvailabilityChanged += new
Microsoft.VisualBasic.MyServices.NetworkAvailableEventHandler
(this.MyApplication_NetworkAvailabilityChanged);
base.Shutdown +=
new System.Windows.Forms.ShutdownEventHandler
(this.MyApplication_Shutdown);
base.UnhandledException += new
System.Windows.Forms.UnhandledExceptionEventHandler
(this.MyApplication_UnhandledException);
base.Startup += new
System.Windows.Forms.StartupEventHandler
(this.MyApplication_Startup);
this.IsSingleInstance = false;
this.EnableVisualStyles = true;
this.ShutdownStyle =
System.Windows.Forms.ShutdownMode.AfterMainFormCloses;
}
protected override void OnCreateMainForm(){
this.MainForm = new Form1();
}
protected override void OnCreateSplashScreen(){
this.SplashScreen = new Form2();
}
private void MyApplication_NetworkAvailabilityChanged(object sender,
Microsoft.VisualBasic.MyServices.NetworkAvailableEventArgs e){
System.Windows.Forms.MessageBox.Show("network");
}
private void MyApplication_Shutdown(object sender, System.EventArgs e){
System.Windows.Forms.MessageBox.Show("shutdown");
}
private void MyApplication_Startup(object sender,
System.Windows.Forms.StartupEventArgs e){
System.Windows.Forms.MessageBox.Show("startup");
}
private void MyApplication_UnhandledException(object sender,
System.Windows.Forms.UnhandledExceptionEventArgs e){
System.Windows.Forms.MessageBox.Show(
e.Exception.StackTrace, e.Exception.Message);
e.ExitApplication = false;
}
internal static void Main(string[] Args){
(new MyApplication()).Run();
}
} //end class
} //end namespace