我将一段代码从VB转换为C#。 VB中的UI有一个按钮 ButNewOrder 。 单击该按钮,下面的方法将在VB代码中执行
Public Sub mnuFileNewJob_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ButNewOrder.Click
Dim ErrorFlag As ErrorFlagType = InitErrorFlag()
Try
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
StatusText = "Loading New Job."
LoadNewSoftJob(Me)
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
Catch ex As Exception
ErrorFlag.NumErrors += 1
ReDim Preserve ErrorFlag.ErrorDef(ErrorFlag.NumErrors - 1)
With ErrorFlag.ErrorDef(ErrorFlag.NumErrors - 1)
.Description = "Error Loading New Job: " + ex.Message
.Number = ErrorFlag.NumErrors - 1
End With
End Try
If ErrorFlag.NumErrors > 0 Then
Dim ErrFrm As New FrmErrList
ErrFrm.ErrorFlag = ErrorFlag
ErrFrm.Show()
End If
End Sub
上面的代码,当我转换为C#时,我得到了这个
public void mnuFileNewJob_Click(System.Object eventSender, System.EventArgs eventArgs)
{
Mold_Power_Suite.Model.FrontEndStructures.ErrorFlagType ErrorFlag = FrontEndStructures.InitErrorFlag();
try
{
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
ModSoftFrontEndGlobalVariables.StatusText = "Loading New Job.";
frmMain main = new frmMain();
MainMod.LoadNewSoftJob(this);// I think I need to replace this with the form name
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
}
catch (Exception ex)
{
ErrorFlag.NumErrors += 1;
Array.Resize(ref ErrorFlag.ErrorDef, ErrorFlag.NumErrors);
var _with1 = ErrorFlag.ErrorDef[ErrorFlag.NumErrors - 1];
_with1.Description = "Error Loading New Job: " + ex.Message;
_with1.Number =Convert.ToInt16( ErrorFlag.NumErrors - 1);
}
if (ErrorFlag.NumErrors > 0)
{
FrmErrList ErrFrm = new FrmErrList();
ErrFrm.ErrorFlag = ErrorFlag;
ErrFrm.Show();
}
}
单击C#应用程序中的Button不会产生任何结果。双击该按钮会生成以下存根,这意味着该按钮的click事件没有任何连接。
private void ButNewOrder_Click(object sender, EventArgs e)
{
}
我想知道如何让我的按钮执行与VB代码相同的功能?
答案 0 :(得分:1)
这是VB的AddHandler
语句的C#版本:
ButNewOrder.Click += new System.EventHandler(this.mnuFileNewJob_Click);
这一行代码传统上由表单设计器添加到您的InitializeComponent()
方法中,但从技术上讲,您可以将它放在任何地方。将它放在表格启动的位置附近,您将获得最佳效果。
答案 1 :(得分:0)
当您选择按钮时,您可以在Visual Studio中导航到Properties-> Events(事件表示为螺栓),然后在单击事件下拉列表中选择您的方法。
或者在构造函数中添加:
ButNewOrder += mnuFileNewJob_Click
或者,您可以导航到窗口的设计器代码(进入InitializeComponent()
),并将ButNewOrder += ButNewOrder_Click
替换为ButNewOrder += mnuFileNewJob_Click