如何访问打开表单的按钮
本文关键字:表单 按钮 何访问 访问 | 更新日期: 2023-09-27 18:16:27
private void rbnbtnPageSetup_Click(object sender, EventArgs e)
{
if (IsFormOpen(typeof(GUI.Printing)))
{
}
else
{
MessageBox.Show("Please Open Printing Form");
}
}
IsFormOpen(Type t)
是一个方法,当打印表单打开时返回true。
我要在打印表单中打开打印预览按钮。确保我不想打开新的打印表单。我的要求是,如果打印表单是打开的,然后按打印预览按钮的形式。
检查表单是否打开的方法:
//Checking Form is open or not
public bool IsFormOpen(Type formType)
{
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == formType)
return true;
}
return false;
}
不需要在另一个表单上点击按钮,只需将'PreviewClick'逻辑移动到单独的方法中,将其设置为public并触发它。
在预览表单中,创建新方法:
private void PrintButtonClick(object sender, EventArgs e)
{
Preview();
}
public void Preview()
{
//... preview logic here
}
然后你可以这样写:
private void rbnbtnPageSetup_Click(object sender, EventArgs e)
{
if (IsFormOpen(typeof(GUI.Printing)))
{
var frm = Application.OpenForms.OfType<Form>().FirstOrDefault(x => x.GetType() == typeof(GUI.Printing)); //this retrieves the preview form
frm.Show();
frm.Preview();
}
else
{
MessageBox.Show("Please Open Printing Form");
}
}
我没有看到我的LINQ方式有任何问题,但只是要确保使用相同的方法来获取表单,以检查它是否打开。所以改变这一行
var frm = Application.OpenForms.OfType<Form>().FirstOrDefault(x => x.GetType() == typeof(GUI.Printing)); //this retrieves the preview form
GUI.Printing preview = null;
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == typeof(GUI.Printing))
{
preview = (GUI.Printing)form;
break;
}
}
if (preview == null)
{
return;
}
preview.Show();
preview.Preview();
这必须工作,否则你的代码中会发生一些非常奇怪的事情。
保持对打印表单的引用,并给它一个公共方法Print()
和一个公共方法ShowPrintPreview()
。然后,当你想打印或预览某些内容时,只需调用相应的方法。