C#.net framework-フォームの片側のみの境界線
質問
私は経験の浅いプログラマであり、Windowsのプログラミングはまったく新しいです。
私はいつも欲しかった小さなプログラムを書いています。 .netフレームワークを使用してC#を使用して記述されています。少なくともそれは私がやっていることだと思うことです。フレームワークと.net、windowsフォーム、win32 apiについてのすべての話は、私を本当に混乱させました。.:(
とにかく単純なFormオブジェクトがあります。
Form f = new Form() ;
f.Text = "" ;
f.ControlBox =false ;
今、片側を除くフォーム上のすべての境界線を削除する方法は?同様に、サイドの境界線は移動するはずですが、上部の境界線はそのままです
FormBorderStyleにはこの機能はありません
また、そのような問題を尋ねることなく、自分でどのように解決しますか?他のコードを見てください?本を読む?特定のウェブサイト Googleで検索しましたが、何も表示されませんでした。
解決
Gidday、
これは残念ながら不可能です-ただし、境界線全体を削除してから、フォームに独自に描画し、OnMouseDown、OnMouseUp、およびOnMouseMoveを使用して独自のドラッグを行うことができます...
このような問題を自分で解決するために、問題を口頭で表すさまざまな方法(たとえば、「ボーダーレスフォーム」、「winformのカスタム境界線」など)を見て、少し時間をかけてグーグルで調べます。私の上司が賢明に言っているように、生産性は常にあなたがどれだけのコードを削減するかということではなく、あなたが学ぶことができることでもあります。
編集:人気の表現が進むにつれて、「Googleはすべてを知っています」 -少し時間をかけてグーグルで調べてもまだ何も見つからない場合は、おそらく解決されていないか、非常にまれです。別の方法は、いくつかの良い本に投資することです。 Windows Formsプログラミング(またはWindowsプログラミングだけでも-Windowsの基礎となるメカニズムについて知ることは非常に便利です。そのようなことが、優れた開発者になるのに役立ちます。優れたプログラマーはコーディングが得意ですが、優れた開発者は実際に有用なソフトウェアを構築するのが得意です。:)
他のヒント
FormBorderStyle.FixedSingleを試したことがあると思いますか?これにより、上部にのみ境界線を持つフォームが表示されます。 とにかく、そうでない場合は、フォームRegionを設定できます。
次のようなもの...
public static void HideBorders(Form form) { Rectangle newRegion = form.Bounds; Rectangle 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 = new Region(newRegion); }
どうすればいいのかわかりますか?あなたが言及したすべてのもの、ヘルプファイル、ウェブフォーラム、本。主なものは、練習、練習、練習です。何かをすればするほど良くなるはずです。
.NET Frameworkはフォームの境界線とタイトルバーの描画をWindows自体に委任するだけなので、説明したとおりに実行することは実際には不可能だと思います。あなたは知っている。
代わりに、 FormBorderStyle.None
を使用し、必要なウィンドウ装飾(タイトルバー、境界線)を手動で描画します。
「ボーダーレスフォームC#」のGoogle検索上位3つのヒットとしてこれらのサイトを表示します:
- BorderLessウィンドウ(java2s.com)
- C#の透明なボーダーレスフォーム(c-sharpcorner .com)
- ドラッグ可能なフォーム:フォーム上の任意の場所をクリックしてボーダレスフォームをドラッグします (codeproject.com)