0

私はプログラムを作成していますが、プログラムのオプションを含む別のフォームがプログラム内にあります。オプションはCheckboxes、不透明度を有効にすることになっています。メインフォームの不透明度を他のフォームで変更できますか?

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

このようなもの...

4

3 に答える 3

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);
     }
}

上位クラスでキャッチ

OptionWindow.oppacity += ChangeOppacity;
于 2013-03-29T11:32:27.187 に答える
1

これが親の子フォームである場合、次のようにすることができます。

this.Parent.Invoke((MethodInvoker)delegate {
    Form temp = (Form)this.Parent;
    temp.Opacity = 0.75});
于 2013-03-29T11:13:08.063 に答える
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そして、これがプログラムからを使用する場合です

OptionWindow window = new OptionWindow(this);
window.Show();
于 2013-03-29T11:06:13.673 に答える