2013-03-29 2 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 из программы

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

OptionWindow не является производным классом от System.Windows.Form поэтому не может иметь метод Show. во всяком случае, этот код будет круговой ссылкой (это вызовет исключение stackoverflow. –

+0

@NuriYILMAZ Спасибо, он был забыт –

1

Если это ребенок форма родитель, вы могли бы сделать что-то вроде этого:

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

+1 Wow. –

1

Использование делегата

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

Invoke это

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

и поймать его в Supperior классе

OptionWindow.oppacity += ChangeOppacity; 
Смежные вопросы