2013-03-29 49 views
0

我做節目,我有該程序的選項裏面的程序的另一種形式。這些選項是Checkboxes,應該啓用不透明度。我可以用其他形式更改主窗體的不透明度嗎?更改不透明另一種形式

private void useOpacity_CheckedChanged(object sender, EventArgs e) 
{ 
    if (useOpacity.Checked) 
    { 
     window().Opacity = .75; 
    } 
} 

這樣的事情...

回答

0

通過選項窗口的構造函數傳遞的MainWindow。然後在您的選項窗口:

public class OptionWindow : Form 
{ 
    Form _mainWindow;      //YOUR PROGRAM IS OF TYPE Form 

    public OptionWindow(Form mainWindow) 
    { 
     this._mainWindow = mainWindow; 
    } 

    private void useOpacity_CheckedChanged(object sender, EventArgs e) 
    { 
     if (useOpacity.Checked) 
     { 
      _mainWindow.Opacity = .75; 
     } 
    } 
} 

這裏是當你從程序

OptionWindow window = new OptionWindow(this); 
window.Show(); 
+0

OptionWindow不是派生類System.Windows.Form抓住它所以不能有顯示方法。反正這個代碼將循環引用(這會導致計算器例外。 –

+0

@NuriYILMAZ感謝。它被遺忘了。 –

1

使用OptionWindow如果是父母的孩子形式,你可以做這樣的事情:

this.Parent.Invoke((MethodInvoker)delegate { 
    Form temp = (Form)this.Parent; 
    temp.Opacity = 0.75}); 
+0

+1哇,這是偉大的! –

1

使用委託

public class OptionWindow 
{ 
    public delegate void oppacityDelegate(double value); 
    public static event oppacityDelegate oppacity; 

調用它

private void useOpacity_CheckedChanged(object sender, EventArgs e) 
{ 
    if (useOpacity.Checked) 
    { 
     oppacity(.75); 
    } 
} 

,並在您supperior類

OptionWindow.oppacity += ChangeOppacity;