2014-04-02 58 views
1

我有一個ListView,我已經設置CheckBoxes = true。 問題是,當我單擊複選框時,單擊事件會轉到窗體後面的窗口,即發生點擊並且窗口最小化。它只發生在複選框的邊界附近,其餘部分(空白空間)不會發生。如何防止ListView複選框單擊通過

請檢查快照這裏:

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(這是灰顏色的。)

+0

我假設你有一個背景圖片。它有透明度嗎?另外:表單的BackColor是什麼?並且:你在使用區域嗎?它是如何創建的? – TaW

+0

是的,我有BackgroundImage,一個.png圖像和窗體的BackColor是灰色的。 – Trum

+1

Png圖像可以具有透明度。我認爲Nimesh提到的窗體邊框實際上是圖像的一部分。你是否同意桌面正在通過垂直條帶流血? – TaW

回答

1

可能問題是出在你的Windows窗體形式的透明度鍵的顏色。複選框區域背景色和透明度鍵顏色相同。所以,你的複選框是透明的。當你點擊複選框時,點擊將在背景表單上顯示。使用不同的透明度顏色,而不是白色或煙白色。例如綠色或藍色。

編輯:

,如果你可以在這裏看到你的背景圖像通過前形式邊框顯示。

enter image description here並排enter image description here

按照MSDN

當TransparencyKey屬性分配一個顏色,具有相同背景色將透明顯示形式的區域。在窗體的透明區域上執行的任何鼠標操作(例如單擊鼠標)都將轉移到透明區域下方的窗口中。例如,如果表單的客戶區域是透明的,則單擊該區域上的鼠標將發送點擊的事件通知給它下面的任何窗口。如果分配給TransparencyKey屬性的顏色與窗體上的任何控件相同,則它們也將透明顯示。例如,如果您將TransparencyKey屬性設置爲SystemColors.Control的窗體上有Button控件,則該控件將透明顯示,除非Button控件的BackColor屬性更改爲不同的顏色。

+0

嘗試更改此ListView所在窗體的TransparencyKey爲綠色,但它沒有幫助。 – Trum

+1

你是如何製作不規則形狀(Mobile Shape)的? – Shell

+0

我不知道我沒有開發它,但有一個灰色背景圖像。這是一個.png – Trum

相關問題