3

私は経験の浅いプログラマーで、Windowsのプログラミングはまったく初めてです。

私はいつも欲しかった小さなプログラムを書いています。.netフレームワークを使用してC#を使用して記述されています。少なくともそれは私がやっていることだと思います。フレームワークと.nets、Windowsフォーム、およびwin32 apiに関するすべての話は、私を本当に混乱させました。.:(

とにかく私は単純なFormオブジェクトを持っています。

 Form f = new Form() ;
 f.Text = "" ;   
 f.ControlBox =false ;

次に、片側を除くフォーム上のすべての境界線を削除するにはどうすればよいですか?のように、側面の境界線は移動する必要がありますが、上部の境界線はそのままである必要があります

FormBorderStyleにはこれには何もありません

また、人々は質問せずに、どのようにしてそのような問題を自分で解決しますか?他のコードを見てください?本を読む?特定のウェブサイト?私はグーグルで検索しましたが、何も表示されませんでした。

4

3 に答える 3

1

ギドデー、

残念ながら、これは不可能です。ただし、境界線全体を削除してから、フォームに独自に描画し、OnMouseDown、OnMouseUp、および OnMouseMove を使用して独自のドラッグを行うことができます...

このような問題を自分で解決するには、問題を口頭で表現するさまざまな方法 (「ボーダーレス フォーム」、「Winform のカスタム ボーダー」など) を調べ、少し時間をかけてグーグルで検索します。私の上司が賢く言っているように、生産性とは、コードをどれだけ削減できるかということだけではなく、何を学べるかということでもあります。

編集: 「Google はすべてを知っている」という一般的な表現にあるように、Google で少し時間をかけても何も見つからない場合は、おそらく解決されていないか、非常にまれです。もう 1 つの方法は、Windows フォーム プログラミング (または Windows プログラミングだけでも - Windows の基本的な仕組みについて知ることは非常に役立ちます。そのようなことは、優れた開発者になるのに役立ちます。優れたプログラマーはコーディングが得意ですが、優れた開発者は実際に有用なソフトウェアを構築するのが得意です。:)

于 2009-09-10T23:34:53.883 に答える
1

FormBorderStyle.FixedSingle を試したことがあると思いますか? これにより、上部のみに境界線があるフォームが表示されます。とにかく、そうでない場合は、フォームのリージョンを設定できます。

何かのようなもの...

public static void HideBorders(フォームフォーム)
{
    Rectangle newRegion = form.Bounds;
    長方形 formArea = form.Bounds;
    Rectangle clientArea = form.RectangleToScreen(form.ClientRectangle);

    formArea.Offset(form.Location);
    newRegion.Offset(clientArea.X - formArea.X, 0);
    newRegion.Width = clientArea.Width;
    newRegion.Height = (clientArea.Y - formArea.Y) + clientArea.Height;

    form.Region = 新しい地域 (新しい地域);
}

何をすべきかをどのように知っていますか?あなたが言及したすべてのもの、ヘルプ ファイル、Web フォーラム、書籍。主なことは、練習、練習、練習です。何かをすればするほど、あなたはより良くなるはずです。

于 2009-09-11T00:01:08.577 に答える
0

.NET Frameworkはフォームの境界線とタイトルバーの描画をWindows自体に委任するだけなので、あなたが説明したことを正確に行うことは実際には可能ではないと思います.AFAIKを説明するためのオプションはありません. .

代わりに、FormBorderStyle.None手動で必要なウィンドウ装飾 (タイトル バー、境界線) を使用して描画します。

「ボーダレス フォーム C#」を Google で検索すると、これらのサイトが上位 3 つのヒットとして表示されます。

于 2009-09-10T23:36:59.230 に答える