我有一个ListView,我已设置CheckBoxes = true . 问题是,当我点击复选框时,click事件会进入我表单后面的窗口,即点击进入并且我的窗口被最小化 . 它只发生在复选框的边界附近,其余部分(空白空间)不会发生 .
请在此处查看快照:
listView复选框
背景图片(实际上是广告)
你可以看到复选框边框和背景窗口/图像周围出现的颜色 .
什么想法可能是错的?
EDIT:
这是在此表单的父表单中以OnLoad运行的代码 .
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.Opacity = 0;
this.BackColor = Color.FromArgb(244, 244, 244);
this.FormBorderStyle = FormBorderStyle.None;
this.ShowInTaskbar = false;
this.TransparencyKey = Color.FromArgb(244, 244, 244);
oWidth = this.Width;
btw.DoWork += new DoWorkEventHandler(btw_DoWork);
btw.ProgressChanged += new ProgressChangedEventHandler(btw_ProgressChanged);
btw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(btw_RunWorkerCompleted);
btw.WorkerReportsProgress = true;
//this.TopMost = true;
this.TopMost = false;
}
有一个.PNG作为这种形式的BackgroundImage(灰色) .
1 回答
问题可能在于窗体的窗体透明度键颜色 . 复选框区域背景色和透明度键颜色相同 . 所以,你的复选框是透明的 . 当您单击复选框时,单击会在背景表单上显示 . 使用不同的透明度颜色,而不是白色或烟白色 . 例如绿色或蓝色 .
EDITED:
如果你在这里可以看到你的背景图像是通过前面的边框显示的 .
Side By Side
按照msdn
为TransparencyKey属性指定Color时,将以透明方式显示具有相同BackColor的表单区域 . 在窗体的透明区域上执行的任何鼠标操作(例如单击鼠标)都将传输到透明区域下方的窗口 . 例如,如果表单的客户端区域变为透明,则单击该区域上的鼠标会将单击的事件通知发送到其下方的任何窗口 . 如果分配给TransparencyKey属性的颜色与表单上的任何控件相同,它们也将以透明方式显示 . 例如,如果窗体上的Button控件的TransparencyKey属性设置为SystemColors.Control,则控件将以透明方式显示,除非Button控件的BackColor属性更改为其他颜色 .