[英]How to prevent ListView checkbox click through
我有一个ListView并且设置了CheckBoxes = true。 问题是,当我单击复选框时,单击事件会转到表单后面的窗口,即发生点击并最小化我的窗口。 它仅在复选框的边界附近发生,在其他地方(空白区域)则不会发生。
请在此处查看快照:
listView复选框
背景图片(实际上是广告)
您可以看到复选框边框和背景窗口/图像周围出现的颜色。
任何想法可能有什么问题吗?
编辑:
这是在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(为灰色)。
可能问题出在Windows窗体的窗体透明键颜色中。 复选框区域的背景色和透明度键色相同。 因此,您的复选框是透明的。 当您单击复选框时,将在背景表格上单击。 使用其他透明颜色,而不是白色或烟白色。 例如绿色或蓝色。
编辑:
如果您可以在此处看到您的背景图像通过前窗体边框显示。
并排
根据msdn
为TransparencyKey属性分配颜色后,具有相同BackColor的表单区域将透明显示。 在窗体的透明区域上执行的任何鼠标操作,例如单击鼠标,都将被转移到透明区域下方的窗口中。 例如,如果将窗体的客户区域设为透明,则在该区域上单击鼠标会将单击事件通知发送到该窗口下方的任何窗口。 如果分配给TransparencyKey属性的颜色与表单上的任何控件相同,则它们也将透明显示。 例如,如果窗体上的Button控件的TransparencyKey属性设置为SystemColors.Control,则除非Button控件的BackColor属性更改为其他颜色,否则控件将透明显示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.