Мой проект состоит из формы с панелью, содержащей настраиваемый элемент управления. В этом настраиваемом элементе управления у меня есть кнопки, которые меняют фоновое изображение.

Моя проблема: эти кнопки изменяют только фоновое изображение настраиваемого элемента управления, в который они помещены, и мне нужно, чтобы они изменили фоновое изображение основной формы, содержащей панель с настраиваемым элементом управления.

Мой текущий код:

this.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));

Мне нужно что-то, что фактически выполнит это:

MainForm.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));

Например: изменить фоновое изображение MainForm.cs с CustomControl.cs

0
Patrick 2 Янв 2016 в 02:45

3 ответа

Лучший ответ

В итоге я использовал что-то другое:

Form MainForm = Application.OpenForms["(The name of the form in which I wanted to change the background)"];

//...

MainForm.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));

В итоге все оказалось намного проще, чем я думал.

0
Patrick 2 Янв 2016 в 02:44

Найдите родителей элемента управления и измените BackgroundImage:

if(this.Parent!=null && this.Parent.Parent!=null)
   this.Parent.parent.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));
0
Alex Jolig 2 Янв 2016 в 06:18

Вы можете использовать Control .FindForm для этого, например

this.FindForm().BackgroundImage = ...
2
Ivan Stoev 2 Янв 2016 в 00:17