我制作了一个包含五个控件的标题栏(自定义用户控件)。它们都是标签,但每个都做不同的工作"。
例如,其中一个是退出表单按钮。如果我将click
事件放入我的自定义用户控件的代码中,例如......
Private Sub ExitButton_Click(sender As Object, e As EventArgs) Handles ExitButton.Click
Close()
End Sub
我收到此错误...
BC30451 'Close' is not declared. It may be inaccessible due to its protection level.
另一方面,我无法将其放入我的项目代码中,因为它无法找到ExitButton
作为"隔离"控制并执行close()
。
有什么建议吗?我也希望通过最小化,最大化等来做同样的事情。
答案 0 :(得分:2)
让我猜一下;您的按钮位于用户控件中。您尝试在Close()
类上调用UserControl
,这显然不是一个窗口但没有它。
有三种解决方案:
ParentForm
媒体资源并在其上调用Close()
(例如ParentForm.Close()
)。容易但不太灵活;如果你想做除Form
基类(如Close()
)中实现的其他事情,例如特定于主窗体,你必须先抛出它并检查它是否真的是你想到的形式。此外,所有这些事情都需要通过Public
或Internal
公开,不要暴露您不必公开的内容。Form
传递给UserControl
。可怕的是因为传递的东西最终只是意大利面条代码。UserControl
所处形式处理的UserControl
举办活动。这可能是最灵活的方法。这是一个用事件解决这个问题的小代码示例:
打开UserControl
的代码并添加事件签名,并在单击按钮时引发该事件:
Public Class MyUserControl
Public Event ButtonClicked(sender As Object, e As EventArgs)
Private Sub MyButton_Click(sender As Object, e As EventArgs) Handles MyButton.Click
RaiseEvent ButtonClicked(sender, e)
End Sub
End Class
然后,在Form
中,附加UserControl
的ButtonClicked事件:
Public Class MyForm
Private Sub MyUserControl1_ButtonClicked(sender As Object, e As EventArgs) Handles MyUserControl1.ButtonClicked
Close()
End Sub
End Class
如果您为多个按钮重复使用该事件,您可以通过传递给该事件的sender
检查它是哪个按钮。 (当然,只需将一个铸造的Button
实例作为事件参数传递就可以优化这个,这只是一个简单的例子。)
答案 1 :(得分:0)
你从哪里“接近”?使用application.exit()
退出应用程序答案 2 :(得分:0)
如果要关闭应用程序,可以使用: Application.Exit() 如果要关闭表单: Me.Close()
答案 3 :(得分:-1)
要关闭您使用我的表单。
me.close