如何防止ListView复选框单击

时间:2014-04-02 08:11:02

标签: c# winforms listview

我有一个ListView,我设置了CheckBoxes = true。 问题是,当我点击复选框时,click事件会进入我表单后面的窗口,即点击进入并且我的窗口被最小化。它只发生在复选框的边界附近,其余部分(空白空间)不会发生。

请在此处查看快照:

listView复选框

image

背景图片(实际上是广告)

image2

您可以看到复选框边框和背景窗口/图像周围出现的颜色。

任何想法可能出错?

修改

这是在此表单的父表单中以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 个答案:

答案 0 :(得分:1)

问题可能在于窗体的窗体透明度键颜色。复选框区域背景色和透明度键颜色相同。所以,你的复选框是透明的。当您单击复选框时,单击会在背景表单上显示。使用不同的透明度颜色,而不是白色或烟白色。例如绿色或蓝色。

<强>编辑:

如果你在这里可以看到你的背景图像是通过正面边框显示的。

enter image description here 并排 enter image description here

根据msdn

为TransparencyKey属性指定Color时,将以透明方式显示具有相同BackColor的表单区域。在窗体的透明区域上执行的任何鼠标操作(例如单击鼠标)都将传输到透明区域下方的窗口。例如,如果表单的客户端区域变为透明,则单击该区域上的鼠标会将单击的事件通知发送到其下方的任何窗口。如果分配给TransparencyKey属性的颜色与表单上的任何控件相同,它们也将以透明方式显示。例如,如果窗体上的Button控件的TransparencyKey属性设置为SystemColors.Control,则控件将以透明方式显示,除非Button控件的BackColor属性更改为其他颜色。