我有一个WinForm应用程序,其中我编写了自己的小颜色选择器,它只显示系统颜色。它基本上是一个
相当简单: 现在我正在打开这个表单:
TableLayoutPanel
,其中添加了一堆较小的面板,我只需设置背景颜色即可。相当简单: 现在我正在打开这个表单:
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()
,这样事件就会触发。 - Bojan BShow()
,然后从颜色选择器内部编程性地使用Close()
关闭窗体,那么我如何获取所选颜色?因为一旦窗体关闭,背面的小面板必须设置为该颜色。 - Code VaderOnClose
或OnClosing
事件监听器来设置颜色(前提是所选颜色是公开可访问的属性),您可以创建一个自定义事件将颜色发送到调用者窗体,您可以将要设置背景的对象作为参数传递给颜色选择器... - Bojan B