其实我有一个简单的问题。搜索时我只发现一些不同的问题。
我有一个包含用户输入控件的主窗体。主窗体还有一些控制按钮。其中一个是“ShowPreview”,一个是“WorkOn”。
点击“ShowPreview”后会运行一些检查,如果确定,则会将用户的输入传输到另一个名为preview的表单,其中输入会更好地呈现。
通过双击预览表单,它将关闭。
但是,用户可以通过单击主表单按钮“WorkOn”返回处理他或她的输入,而无需事先关闭预览表单。
所以我想在关闭预览表单的按钮WorkOn的click事件中添加一个回调方法 - 如果仍然打开的话。问题是,它可以在此时关闭且不存在,或者它仍然可以打开。
所有示例都告诉您首先实现委托类型,使用此委托创建事件并注册您的回调方法。
但是,当我双击VS中的一个按钮(在我的主窗体上)时,实际上会为该按钮生成一个click事件处理程序,并且在一个代理人的掩护下也是如此。所以我认为最好的方法是使用按钮的现有点击事件,并将预览表单的结束方法作为回调方法添加到它。如果此时预览表单不存在(因为用户实际上双击它并因此已经关闭它),我想它的回调方法将不再被注册。会吗? 我不太清楚我能做到这一点以及如何做到这一点 我觉得我应该只注册一个符合.NETs事件处理方法签名的预览表格的事件处理方法到我的WorkOn按钮的点击事件。
private void buttonPreview_Click(object sender, EventArgs e)
{
saveVariables();
pv = new Preview();
transferVariableInput(pv);
if (pv.PreviewShow()) // checks done in PreviewShow then shown
{
this.buttonSave.Visible = true;
this.buttonWorkOn.Visible = true;
// some other buttons set to visible = false here
}
}
private void buttonWorkOn_Click(object sender, EventArgs e)
{
// When this buttons click event occurs I want to check whether the
// preview form still exists and if it does it should be closed.
this.buttonWorkOn.Visible = false;
this.buttonSave.Visible = false;
this.buttonOpen.Visible = true;
this.buttonPreview.Visible = true;
this.tabContactInfos.Enabled = true;
}
感谢您的澄清。 岸堤