2016-05-21 19 views
5

私はC#で作業しています。私はこの質問が一般的に尋ねられることを知っています、それは私がまだトップバーを完全に隠すことができないことです。これは、フォームテキスト文字列を ""とし、controlbox = falseに設定したときの結果です。Windowsフォームのトップバーを完全に非表示にできないC#

まだ影の効果をしたい:

Still want the shadow effect

だから、あなたが側に境界線を見ることができるように(素晴らしい!)消えて、通常の影(素晴らしい!)がありますが、上の境界ましたこの奇妙な白い線は私が取り除くことはできない。

フォームの境界線のプロパティを 'none'に設定したくない場合は、統合されたサイズのコントロールとフォームのシャドウを楽しむため、オプションではありません。これに対する他の提案はありますか?

ありがとうございます!

(私は右上のボタンは私が生成され、私の編集可能な形のエッジを示していることを指定する必要があります。その上で、ホワイトスペースは、私が削除しようとしているものです。)

+0

これを試してみましたか:[枠線を使用してタイトルバーを作成するにはどうすればよいですか? (Windows 7のボリュームコントロールのような)](http://stackoverflow.com/questions/3594086/how-to-create-a-form-with-a-border-but-no-title-bar-like-volume- control-on-wi) –

+0

@RezaAghaeiはい、私は実際にこれを投稿する前にそれを読んでいました。 form.FormBorderStyle = FormBorderStyle.SizableToolWindow;私は私の国境として設定したものを、それでも同じように見えます。 – user3811284

答えて

0

私は可能性がありこれをWindows 7で複製しない - 白い四角形が表示されます。
(これはFormBorderStyleに依存します - 境界線の削除を完了するには 'None'を入れます)
手順:
1.新しいWindowsフォームアプリケーションを作成します。
2.フォームウィンドウ
3.プロパティ - >
3.1をクリックします。 FormBorderStyle = None
3.2。 ControlBox = False
3.3。テキスト=
は、(テキストでは、私は「Form1の」を削除し、それが空のまま)

  1. あなたはどのようなプロジェクトを使用しましたか?
    WPFで簡単に見つからなかったので、これはWindows Formsアプリケーションだと思います。

  2. どのようなオペレーションシステムを使用していますか?
    私はWindows 7を使用しています、あなたはWindows 10ですか?

  3. 私が得意としないのは、右側に最小化、最大化、および閉じるボタンがあることです。 ControlNox = falseは即座に削除します。

+2

私はWindows 10を実行していますので、これはWindows 10のエラーですか?私はWindows 7コンピュータでプログラムを実行しようとしていません。私が前に言ったように、FormBorderStyle = Noneを使用したくないのは、自分のフォームにシャドーとサイズ変更のオプションが必要なためです。最小化、最大化、および閉じるボタンは、自分で作ったボタンです(コントロールボックスではありません)。 – user3811284

+0

あなたはその薄い空白を取り除きたいと言ったのですか?またはボタンがオンになっている灰色の領域全体ですか? –

+0

Oriナッハム、ちょうど薄い空白! – user3811284

1

私は

public const int WM_NCCALCSIZE = 0x0083; 


    private struct RECT 
    { 
     public int Left; 
     public int Top; 
     public int Right; 
     public int Bottom; 
    } 

NCCALCSIZE_PARAMS structure

は、サイズ、位置を計算するためにWM_NCCALCSIZEメッセージの処理中にアプリケーションが使用できる情報、および有効な内容を含むWindows 10上で同じ問題を抱えていましたウィンドウのクライアント領域のウィンドウのクライアント領域のサイズと位置を計算しなければならないときに送信され

struct NCCALCSIZE_PARAMS 
    { 
     public RECT rgrc0, rgrc1, rgrc2; 
     public IntPtr lppos; 
    } 

WM_NCCALCSIZE message

。このメッセージを処理することにより、アプリケーションは、ウィンドウのサイズまたは位置が変化したときに、ウィンドウのクライアント領域の内容を制御できます。

ウィンドウは、このメッセージをWindowProc関数を通じて受信します。上に

protected override void WndProc(ref Message m) 
    { 

     switch (m.Msg) 
     { 

      case WM_NCCALCSIZE: 
       { 
        NCCALCSIZE_PARAMS csp; 

        csp = (NCCALCSIZE_PARAMS)Marshal.PtrToStructure(m.LParam, 
        typeof(NCCALCSIZE_PARAMS)); 
        csp.rgrc0.Top = csp.rgrc0.Top - 3; 
        Marshal.StructureToPtr(csp, m.LParam, false); 
       } 
       break; 
     } 
    } 

と白のスペースがなくなって。

関連する問題