簡體   English   中英

未在C#代碼中觸發事件

[英]Event not being fired in C# code

我的VB項目中有一個帶有按鈕的表單。 點擊按鈕,執行如下功能

Private Sub FrmAddMaterial_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Enter
        If LstMaterials.SelectedIndex > -1 Then
            UpdateMaterialScreen(Me, LstMaterials.SelectedIndex, ErrorFlag)
        Else
            UpdateMaterialScreen(Me, 0, ErrorFlag)
        End If
    End Sub

我將整個代碼轉換為C#,並將按鈕綁定到同一事件,如下所示。

 Private Sub ButNewEditSoftMaterials_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButNewEditSoftMaterials.Click
        MaterialFrm = New FrmAddMaterial
        MaterialFrm.Show()
    End Sub

FrmAddMaterial是正在加載的表單,並且具有如下所示的事件。

 private void FrmAddMaterial_Enter(object sender, System.EventArgs e)
        {
            if (LstMaterials.SelectedIndex > -1) {
                ModSoftOutput.UpdateMaterialScreen(this, LstMaterials.SelectedIndex,ref ErrorFlag);
            } else {
                ModSoftOutput.UpdateMaterialScreen(this, 0,ref ErrorFlag);
            }
        }

代碼FrmAddMaterial_Enter不在C#中觸發,但在VB中觸發。我檢查了FrmAddMaterial屬性,可以看到Enter事件已綁定。 不能讓我的FrmAddMaterial_Enter在C#中FrmAddMaterial_Enter的問題可能是什么?

在C#中, Click Event觸發了單擊,因此您必須將方法/偵聽器綁定到該事件。

MSDN狀態:單擊按鈕時發生: https : //msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.button.click(v= vs.110) .aspx

Enter Event控件時(例如,使用Tab切換時)會發生Enter Event

MSDN參考: https : //msdn.microsoft.com/zh-cn/library/system.windows.forms.control.enter(v=vs.110).aspx

嘗試將您的偵聽器重新分配給Click Event ,該Click Event應該起作用,或者至少在您單擊按鈕時被觸發。

從輸入事件的MSDN文檔中:

回車和離開事件由Form類抑制。 Form類中的等效事件是Activated和Deactivate事件。

https://msdn.microsoft.com/de-de/library/system.windows.forms.control.enter(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet -1

因此,它們將不使用表單,而只能使用控件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM