我有 5 个表单(c# winforms),我的应用程序仅使用一个表单作为父表单,所有子表单都通过按需调用 ShowDialog 方法来显示。我希望让子表单成为焦点,并且在为任何子表单调用 ShowDialog 方法之前设置 Opacity = 0.83,然后将其重置为 1。但我需要在所有地方都这样做。有没有常见的方法来实现这一点?
问问题
1312 次
3 回答
2
Encapsulate
中的逻辑single method
并始终使用该方法来调用您的子表单,例如-
public void ShowChildForm()
{
this.Opacity = 0.83;
// show dialog logic here
this.Opacity = 1.0;
}
于 2013-06-02T11:40:15.680 回答
0
这是我一直在寻找的答案,
public DialogResult ShowChildForm(Form childForm)
{
this.Opacity = 0.83;
DialogResult dr = childForm.ShowDialog();
this.Opacity = 1.0;
return dr;
}
于 2013-06-02T11:58:11.423 回答
0
您可以在 Parent 表单中订阅 ChildForm 的 Load 和 Closed 事件,如下所示:
public partial class Parent : Form
{
public Parent()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
var form = new ChildForm();
form.Load += form_Load;
form.Closed += form_Closed;
base.OnLoad(e);
}
void form_Closed(object sender, EventArgs e)
{
this.Opacity = 1;
}
void form_Load(object sender, EventArgs e)
{
this.Opacity = 0.85;
}
}
于 2013-06-02T11:59:43.650 回答