我有3種形式。第二個是顯示幫助,第三個是模態對話框。從第三種形式打開第二種形式
在Form1我:
Form2 HelpForm = new Form2();
Form3 EditForm = new Form3();
而且只是做一個幫助菜單:
HelpForm.Show();
我想也顯示HelpForm從Form3控制。我怎樣才能做到這一點?
我有3種形式。第二個是顯示幫助,第三個是模態對話框。從第三種形式打開第二種形式
在Form1我:
Form2 HelpForm = new Form2();
Form3 EditForm = new Form3();
而且只是做一個幫助菜單:
HelpForm.Show();
我想也顯示HelpForm從Form3控制。我怎樣才能做到這一點?
在EditForm的構造函數中傳遞HelpForm對象,並將其分配給私有變量。在需要時使用變量調用show。
Form2 HelpForm = new Form2();
Form3 EditForm = new Form3(HelpForm);
.....
EditForm.ShowHelp();
隨着Form3:
Class Form3
{
private Form2 helpForm = null;
public Form3(Form2 HelpForm)
{
helpForm = HelpForm;
}
public void ShowHelp()
{
helpForm.Show();
}
}
非常感謝您的答覆。 –
事實上,我意識到將EditForm打開爲模態是不夠的。我需要在編輯時諮詢幫助,並且不可能在EditForm和Form1以上的位置安裝HelpForm。我將它作爲非模態打開,只是在Form1打開時禁用某些命令,所以「幫助」菜單始終可用。 –
幫助是一種全球性(如果你的應用程序的增長),它應該是任何地方訪問。所以也許一個(單獨)你的幫助單身人士可以幫助!從任何地方
class Help
{
private static Form helpForm = null;
static void ShowHelp {
if (helpForm == null)
helpForm = generateHelpForm(); //TODO implement
helpForm.Show();
}
訪問它...
// somewhere in formx
Help.ShowHelp();
作爲一個選項,您可以使用Application.OpenForms
FormCollection fc = Application.OpenForms;
if (fc.OfType<Form3>().Any())
{
fc.OfType<Form3>().First().Show();
}
你就不能實例化一個'HelpForm'在'事件處理程序Form3'? –