2012-02-21 13 views
0

サイズ変更に関するもう1つの問題は、透明ラベルを設定するCreateParamsメソッドを使用していて、他の多くのものと同様、すべてが見た目と機能が優れています...ただし、消える!サイズ変更時に透明なラベルが消える

誰もが考えている?コントロールはそこにありますが、フォームを最小化してから、それを元に戻すようにテキストが表示されません!

public class TransparentLabel : Label 
{ 
    public TransparentLabel() 
    { 
     this.SetStyle(ControlStyles.Opaque, true); 
     this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false); 
    } 

    protected override CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams parms = base.CreateParams; 
      parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT 
      return parms; 
     } 
    } 
    protected override void OnPaintBackground(PaintEventArgs e) 
    { 
     if (base.BackgroundImage == null) 
     { 
      e.Graphics.DrawRectangle(new System.Drawing.Pen(this.BackColor, 1), e.ClipRectangle); 
     } 
     else 
     { 
      base.OnPaintBackground(e); 
     } 

    } 
} 
+0

これへのリンクの長さを設定:// stackoverflowの。 com/q/9377337/719186)。あなたのフォームは、おそらくリークしているリソースです。上記のサンプルコードは、問題を再現しません。 – LarsTech

+0

@LarsTech私はちょっと前にそれを見つけましたが、リソースが漏れているかどうかわかりません。 GDIオブジェクトが常に85にとどまっているという申し訳ありませんが、私はどこかからメモリを漏らしています – Neo

+0

メモリリークは解決されたレポートビューアであるとわかりました。なぜラベルが消えるのかまだわかりません:( – Neo

答えて

0

これへの迅速な解決策はリンクLabelコントロールを使用していた、透明にその背景を設定し、おそらくあなたの[その他の質問](HTTPに関連している0

0

私はコードをテストすると、コントロールがZオーダーでその下にあるはずのコントロールによって描画されているように見えます。正しいペイントメッセージに応答してテキストを再描画する必要があるかもしれません。私はこれを行うと思われるTransparentLabel hereの例を見つけました。

+0

私はもともとスクリプトを試していましたが、うまくいきませんでした。 – Neo

関連する問題