Top > プログラミング > .NET Tips> タイトルバーのないフォームを移動できるようにする

タイトルバーのないフォームを移動できるようにする」への評価、コメント

評価

良い / 悪い = 52 / 4 (「良い」の割合 = 0.929 , 人気度 = 1.624

評価する

コメント一覧


通常のコメント
管理人 2016/05/12 (Thu) 00:09:41
> if文の条件が
> (e.Button & MouseButtons.Left) == MouseButtons.Left
> となっていますが、
> e.Button == MouseButtons.Left
> としたのでは何か不都合があるのでしょうか。

MouseButtons構造体にはFlagsAttributeが適用されていますので、このようにしています。実際このケースで不具合があるかは、分かりません。もし確実に不具合がないということでしたら書き直しますので、お知らせください。

通常のコメント
質問です。 2016/05/11 (Wed) 14:35:39
if文の条件が
(e.Button & MouseButtons.Left) == MouseButtons.Left
となっていますが、
e.Button == MouseButtons.Left
としたのでは何か不都合があるのでしょうか。
e.Button & MouseButtons.Left
としている理由を教えてください。

通常のコメント
管理人 2015/06/22 (Mon) 00:11:22
> WndProcをオーバーライドする方法だとフォーム上でダブルクリックした際に最大化されてしまいますね。

最大化を防ぐ方法を別のページ(http://dobon.net/vb/dotnet/form/preventmaximize.html)で説明することにしました。最大化を防ぐのは、FormBorderStyleプロパティがNoneの場合は、難しいです。

> なぜC++だけないの?

C#とVB.NETだけでも正直つらいです。これ以上は、私一人の力では無理です。もしご協力いただけるのであれば、ご連絡ください。

評価の理由
C++も載せなさい 2015/04/12 (Sun) 16:18:39
評価:悪い
なぜC++だけないの?
C++で検索してここが出てきたからC++載ってるのかなーと思ってきたのに!!

通常のコメント
煉倉庫 2015/03/3 (Tue) 17:05:19
http://acha-ya.cocolog-nifty.com/blog/2011/09/post-0496.html
を確認したところ最大化のキャンセルがありました
ただメッセージの切り分けをいちいちif分を繰り返すのは不細工だったのでswitchにしてWM_NCHITTESTの時にbase.WndProcを呼んでから処理を行い、キャンセルしたい場合と既に呼んだ場合にフラグを立てることでswitchの後にフラグチェックを入れてbase.WndProcを呼ぶ形にすれば他のメッセージのキャンセルなど良い感じに実装できるようになりました

通常のコメント
煉倉庫 2015/03/3 (Tue) 15:33:15
WndProcをオーバーライドする方法だと先にbase.WndProcを呼ばないと動かなくなるのが難点
おかげでオーバーライドした中でメッセージを無効化する処理が入れられなくなる

通常のコメント
匿名 2013/05/3 (Fri) 22:02:16
WndProcをオーバーライドする方法だとフォーム上でダブルクリックした際に最大化されてしまいますね。
フォームのサイズが変わるとまずい場合は別の方法の方が良さそうです。

評価の理由
ゆき 2012/12/10 (Mon) 14:32:14
評価:良い
どのサイトでも見つからなかったのに、見つかってよかったです。
ありがとうございます

評価の理由
匿名 2011/12/19 (Mon) 15:25:59
評価:良い
タイトルバーがあるフォームの場合、移動中マウスはタスクバーにのりません。
それを考慮すると「WndProcをオーバーライドする方法」が本命かな。

評価の理由
れおぽん 2009/04/3 (Fri) 10:29:36
評価:良い
C#初心者なので、大変助かりました。
※C#って・・VB+java+C?

評価の理由
水t(ry 2009/03/20 (Fri) 19:10:51
評価:良い
まさにこの方法を探していました。
ありがとうございました。

通常のコメント
thisis 2007/11/15 (Thu) 00:10:36
Location += (Size)e.Location - (Size)mousePoint;

これでよろし。

評価の理由
mkuge 2006/12/1 (Fri) 11:47:49
評価:良い
この実現方法をまさに探していました。

評価の理由
匿名 2006/10/5 (Thu) 16:22:15
評価:良い
業務で役に立ちました

通常のコメント
管理人 2006/09/20 (Wed) 03:51:57
まどかさんとやねうらおさんのご指摘を反映させていただきました。ありがとうございました。

通常のコメント
やねうらお 2006/09/4 (Mon) 11:47:35
SetDesktopLocationを使うべきではないです。
http://d.hatena.ne.jp/yaneurao/20060904

通常のコメント
まどか 2005/11/1 (Tue) 18:33:22
最初の例で、位置をマイナス演算して保存しているが
実際に計算する際に演算子を使ったほうが良いのでは。
可読性と初級者の理解のしやすさの理由で。

評価の理由
ハタ 2004/10/19 (Tue) 19:49:22
評価:良い
自分がやってみたいことがわかったので、非常に参考に
なりました。

評価の理由
乗りれ 2004/08/26 (Thu) 19:45:24
評価:良い
Delphiと違ってC#はネット上の情報が少ないのですが、
このサイトはいいです。

通常のコメント
seiji65jp 2004/04/27 (Tue) 20:41:24
探していた答えが、ありました。
インターネットってすばらしいです。

コメントの投稿

[説明]