我正在尝试将VB.NET项目转换为C#。 我根据需要传递所有表单和类,但我不知道从ApplicationEvents.vb编写事件需要从哪里开始(我相信它的属性是autoGenerated)
以下是我的ApplicationEvent.vb文件中的代码:
Imports GM.Powertrain.RemoteCopy.Interfaces
Imports System.Runtime.Remoting.Channels.Tcp
Imports System.Runtime.Remoting.Channels
Namespace My
Partial Friend Class MyApplication
Private Shared serviceConfig As ServiceConfig =
serviceConfig.Load()
Protected Overrides Function OnStartup(
ByVal eventArgs As StartupEventArgs) As Boolean
Dim channel As TcpChannel = New TcpChannel()
ChannelServices.RegisterChannel(channel, False)
Me.MainForm = New Computer_Network_MAIN_SCREEN()
Return MyBase.OnStartup(eventArgs)
End Function
Public ReadOnly Property Config() As ServiceConfig
Get
Return serviceConfig
End Get
End Property
Public ReadOnly Property LocalMachine() As IRemoteCopier
Get
Return serviceConfig.GetObject(Of IRemoteCopier)("localhost")
End Get
End Property
End Class
End Namespace
此外,任何可能有助于此转换的提示都将受到赞赏。 谢谢!
答案 0 :(得分:5)
c#中没有ApplicationEvent.vb的等效文件。但是,在Program.cs中启动循环之前,您可以编写OnStartup函数中的任何代码。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//code in OnStartUp
Application.Run(new Form1());
Application.ApplicationExit += Application_ApplicationExit;
}
static void Application_ApplicationExit(object sender, EventArgs e)
{
throw new NotImplementedException();
}
希望这有帮助。
答案 1 :(得分:1)
这是一种可以自己找到答案的方法:
以下是.Net反编译器的一些链接
http://www.telerik.com/products/decompiler.aspx
http://www.jetbrains.com/decompiler/
http://www.devextras.com/decompiler/
http://wiki.sharpdevelop.net/ilspy.ashx
或者也许你可以在免费的时候找到旧版的.Net Reflector ...
答案 2 :(得分:0)
如何转换此类完全取决于您如何实现新的C#项目。
如果这是一个标准的Windows窗体项目,我会在打开主窗体之前将OnStartup代码添加到Main
。在这段代码中,您可能只需要serviceConfig和Channel相关的项目,而不是MainForm代码。
答案 3 :(得分:0)
Visual Studio 2010为C#应用程序项目创建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 frmMain());
}
}
如果是VB.NET,Application.Run()会激活“Startup”事件。在这种情况下,您不需要捕获该事件,因为您使用上面指定的代码控制应用程序何时运行。
如果要订阅应用程序即将关闭时触发的事件,请使用以下代码:
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
然后定义处理此事件的函数:
static void Application_ApplicationExit(object sender, EventArgs e)
{
// your shutdown code here ...
}
因此,您的代码应如下所示:
using GM.Powertrain.RemoteCopy.Interfaces;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels;
namespace ProjectName
{
static class Program
{
private static ServiceConfig serviceConfig = serviceConfig.Load();
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
TcpChannel channel = new TcpChannel();
ChannelServices.RegisterChannel(channel, false);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMainCard());
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
}
public static ServiceConfig Conifg
{
get { return serviceConfig; }
}
public static IRemoteCopier LocalMachine
{
get { return serviceConfig.GetObject<IRemoteCopier>("localhost"); }
}
static void Application_ApplicationExit(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
}