У меня есть приложение winform, где я написал свой собственный небольшой набор цветов, который будет отображать только системные цвета. Это в основном TableLayoutPanel
с добавлением к нему кучи небольших панелей, на которые я просто установил цвет фона.Закрытие формы, открывшейся ShowDialog()
Довольно просто:
Теперь я открываю эту форму с:
using (frmColourWindow colourPicker = new frmColourWindow (Cursor.Position.X, Cursor.Position.Y, findingPriority))
{
colourPicker.ShowDialog();
if (!colourPicker.SelectedColor.IsEmpty)
{
pnlColor.BackColor = colourPicker._SelectedColor;
}
}
и закрывая его, установив DialogResult
, когда пользователь нажал на одну из цветные панели.
Все это работает очень хорошо, единственное, что я не могу получить, это закрыть форму, когда она теряет фокус (например, когда пользователь щелкает в другое место или начинает печатать). Я взглянул на события Deactivate
, LostFocus
и Leave
. Просто не могу заставить эти события стрелять, когда я хочу их. Может, мне что-то не хватает?
При открытии формы с помощью 'ShowDialog()' вы можете использовать эту форму только до тех пор, пока она не будет закрыта. Если я правильно понимаю, что вы хотите, используйте 'Show()' вместо 'ShowDialog()', тогда эти события должны срабатывать. –
Вы, безусловно, делаете, выбираете панель и выбираете ApplicationSettings. Нажмите F1, если вам нужна дополнительная помощь. –
@Bojan, как мне получить выбранный цвет из моего выбора цвета, если я использую 'Show()', а затем 'Close()' форму программно изнутри набора цветов? Поскольку маленькая панель в спине должна быть установлена на этот цвет после того, как форма закрывается –