我正在将windows窗体应用程序从VB转换为C#。
简而言之,我在formLocation()类中有一个方法,传入一个表单(在双击时触发),该表单可以重置为MainForm的MDIChild。由于某些原因,此VB代码无法转换为C#。这迫使我创建一个新的MainForm实例,这并不理想,因为子窗体必须放入当前的MainForm实例中。这是VB代码:基本上我只需要C#的等价物:
Public Sub contain(ByVal form As Form)
With form
.MdiParent = MainForm
End With
End Sub发布于 2017-02-20 00:04:07
VB创建了一个默认的forms实例,该实例通过与form类相同的名称进行访问,这在历史上造成了很多混淆-所有这些都是为了节省几行代码。
在'MainForm‘类中,插入以下内容:
private static MainForm _DefaultInstance;
public static MainForm DefaultInstance
{
get
{
if (_DefaultInstance == null)
_DefaultInstance = new MainForm();
return _DefaultInstance;
}
}现在,将您的代码更改为:
form.MdiParent = MainForm.DefaultInstance;这是重现VB为你做的事情的最接近的方法,但是你最终应该用一种更标准的方法来实例化你的窗体。
将VB转换为C#时,您会遇到许多其他情况,VB对程序员隐藏细节的良好意图阻碍了对编程概念(如实例与类型)的基本理解。
https://stackoverflow.com/questions/42327931
复制相似问题