【发布时间】:2016-08-16 12:31:45
【问题描述】:
我的 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# 中触发?
【问题讨论】:
-
我认为您需要将侦听器附加到 Click 事件而不是 Enter 事件。 Enter 事件是在控件进入未点击时触发的。
-
这两段代码是相同的,所以问题必须与附加处理程序有关。你能发布那个代码。您还可以澄清一下您在输入表单与单击按钮方面的期望行为是什么
-
你应该使用 Click 事件。输入控件时触发 Enter 事件。阅读以下文档以了解 Enter 事件 msdn.microsoft.com/en-us/library/…
-
当单击按钮时,该代码也不会在 VB.NET 中触发。此外,单击按钮时甚至不会触发 FrmAddMaterial_Enter。您使用了错误的事件。