【发布时间】:2020-12-04 10:24:55
【问题描述】:
我坚持使用PerformClick 方法。我有一个名为mymainform 的主表单,还有一些子表单。加载主表单时,我正在创建子表单并使用表单可见性隐藏它们并访问子表单上的一些元素。
我的问题是从 MainForm 中单击 subform1 上的按钮。我已经写了下面的代码,它没有工作。通常DayModeButton 改变布尔值; isDay = !isDay
在主窗体上单击 button1 后,它不会更改 isDay 布尔值。
private void button1_Click(object sender, EventArgs e)
{
mysubform1.DayModeButton.PerformClick();
button1.Text = mysubform1.isDay.ToString();
}
如果我编写此代码,它可以工作,但我不想显示和隐藏表单,因为它对用户来说不是一个好的视图。
private void button1_Click(object sender, EventArgs e)
{
mysubform1.Visible=true;
mysubform1.DayModeButton.PerformClick();
button1.Text = mysubform1.isDay.ToString();
mysubform1.Visible=false;
}
谁能帮我以隐形形式执行Click 事件?
谢谢
【问题讨论】:
-
你为什么首先使用 PerformClick?了解不同表单上的 internas(具体按钮)并尝试使用它是一个坏习惯。我不明白你为什么需要那个。给你的子表单一个方法。如果需要,请调用该方法,并让您的子表单也从按钮单击处理程序中调用该方法。并且充其量在您的子表单中将所有控件设置为私有,以便您(没有人)尝试直接调用它们。
-
@Ralf 甚至更好,如果可能的话,避免需要有一个不可见的表单,将所需的逻辑放在一个可以实例化的类中,而无需依赖表单、窗口消息等。这取决于需要,但是你需要一个表单来实现一些逻辑,这很奇怪