我做節目,我有該程序的選項裏面的程序的另一種形式。這些選項是Checkboxes
,應該啓用不透明度。我可以用其他形式更改主窗體的不透明度嗎?更改不透明另一種形式
private void useOpacity_CheckedChanged(object sender, EventArgs e)
{
if (useOpacity.Checked)
{
window().Opacity = .75;
}
}
這樣的事情...
我做節目,我有該程序的選項裏面的程序的另一種形式。這些選項是Checkboxes
,應該啓用不透明度。我可以用其他形式更改主窗體的不透明度嗎?更改不透明另一種形式
private void useOpacity_CheckedChanged(object sender, EventArgs e)
{
if (useOpacity.Checked)
{
window().Opacity = .75;
}
}
這樣的事情...
通過選項窗口的構造函數傳遞的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();
使用OptionWindow
如果是父母的孩子形式,你可以做這樣的事情:
this.Parent.Invoke((MethodInvoker)delegate {
Form temp = (Form)this.Parent;
temp.Opacity = 0.75});
+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;
OptionWindow不是派生類System.Windows.Form抓住它所以不能有顯示方法。反正這個代碼將循環引用(這會導致計算器例外。 –
@NuriYILMAZ感謝。它被遺忘了。 –