В событии Deactivate вашей формы поставьте «this.Close ()». Ваша форма закроется, как только вы нажмете где-нибудь еще в Windows.
Обновление: я думаю, что у вас есть кнопка громкости, и внутри события Click вы создаете экземпляр формы VolumeSlider и отображаете его, вызывая ShowDialog (), который блокируется, пока пользователь не закроет всплывающую форму. , В следующей строке вы читаете том, выбранный пользователем, и используете его в своей программе.
Это нормально, но, как вы заметили, это заставляет пользователя явно закрывать всплывающее окно, чтобы вернуться к основной программе. Show () - это метод, который вы действительно хотите использовать здесь во всплывающей форме, но Show () не блокирует, что означает, что событие Click на главной форме завершается, не зная, каким должен быть новый том.
Простое решение - создать публичный метод в главной форме, например так:
public void SetVolume(int volume)
{
// do something with the volume - whatever you did before with it
}
Затем в событии Click вашей кнопки громкости (также в главной форме) вы заставляете VolumeSlider выглядеть так:
VolumeSlider slider = new VolumeSlider();
slider.Show(this); // the "this" is needed for the next step
В форме VolumeSlider, когда пользователь работает (я думаю) с полосой прокрутки, вы помещаете этот код в событие ValueChanged на полосе прокрутки (я думаю, что это так):
MainForm owner = (MainForm)this.Owner;
owner.SetVolume(scrollbar.Value);
А затем в событие Deactivate формы VolumeSlider вы должны поместить this.Close (), как указано выше. Ваша форма будет вести себя как положено.