C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■103837 / 29階層)  Visual Basicで簡易CADを作成
□投稿者/ 魔界の仮面弁士 (3894回)-(2025/08/07(Thu) 20:25:02)
No103836 (shiro さん) に返信
> 柱・壁とも10の距離だと同時に黄色を選択してしまうためでした。

現状は、右クリックした時に選択判定が起きますが、その操作だと
近くに複数のアイテムがあった場合、どれが選択されるかユーザーに分かりにくいですね。

こういう時には、
 「アイテム上にマウスがホバーしていた時に色を変える」
 「アイテムを選択(右クリック)したら、さらに別の色にする」
な画面操作にすることで、ユーザーの誤選択を防げるようになるかと思います。

この掲示板の HTML リンクでも、
 普段は青文字
 ホバー時は下線+赤文字
として区別されていますが、それと同じようなイメージです。


また、クリック選択する際には「円柱なら円の中だけ」「壁なら線分の中だけ」のように
ヒットテスト範囲を厳密にすることで、近接するアイテムが誤って選択されることを防げそうです。


あるいは、右クリックした時に複数の選択候補がある場合、
どれを選択させるか、ユーザーに選ばせるようにしてみるのも便利かもしれません。

WinForms でも、TabControl などの上に Button を配置し、
デザイン時にそのボタンを右クリックすると、
 TabPage1 の選択
 TabControl1 の選択
 Form1 の選択
という選択肢が現れ、それを選ぶことで正しいアイテムを選べるので、それと同じイメージ。


> ・柱だけを先に配置し、右クリックで柱を選択しようとしても黄色にならない。
>  壁も配置し終わった後でないと有効にならない。
状況を整理しましょう。
「黄色にならない」のではなく、「選択状態にできていない」のではありませんか?
もう一度デバッグしてみてください。

IsSelcted が True なのに黄色にならないのなら、
Paint イベントの処理に不具合があることになります。

しかし、右クリックしても IsSelected が False のままになっているだとか、
あるいは別アイテムが選択されてしまうといった状況なのであれば、それは
Paint イベントではなくマウス系イベント(MouseDown など)に問題があるということです。


> ・壁を選択しようとすると柱も一緒に黄色に選択してしまったり、
>  新たに青色の壁を新たな方向に配置してしまう。

座標を決めるための各種のフィールド変数(element, isPlacing, startPoint, endPoint など)の値が、
それぞれのタイミングでどういう値になっているか、デバッグ時に確認するようにしてみましょう。

値の確認には、Debug.WriteLine メソッドを使うことができます。
https://www.umayadia.com/Note/Note021DebugWriteLine.htm
https://www.umayadia.com/Note/Note001ConsoleWriteLine.htm


一時停止中なら、ローカルウィンドウ/自動変数ウィンドウ/ウォッチウィンドウなどでも確認できますが、
マウス操作など随時発生する処理の値を追跡するには、Debug.WriteLine を使うのが良いかと思います。

値の変化をデバッグしてみると、たとえば新規に壁を作る前に、以前のクリック座標の情報をリセットし忘れているとか、
あるいは判定式の書き漏れがあるとか、そういったミスを発見できるかもしれません。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[28]: Visual Basicで簡易CADを作成 /shiro →Re[30]: Visual Basicで簡易CADを作成 /shiro
→Re[30]: Visual Basicで簡易CADを作成 /shiro
 
上記関連ツリー

Visual Basicで簡易CADを作成 / shiro (25/07/25(Fri) 20:50) #103783
Re[1]: Visual Basicで簡易CADを作成 / KOZ (25/07/27(Sun) 14:35) #103784
  └ Re[2]: Visual Basicで簡易CADを作成 / shiro (25/07/28(Mon) 20:17) #103785
    ├ Re[3]: Visual Basicで簡易CADを作成 / kiku (25/07/29(Tue) 08:49) #103786
    └ Re[3]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/29(Tue) 14:06) #103791
      └ Re[4]: Visual Basicで簡易CADを作成 / shiro (25/07/30(Wed) 12:22) #103792
        └ Re[5]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/30(Wed) 15:46) #103794
          └ Re[6]: Visual Basicで簡易CADを作成 / shiro (25/07/31(Thu) 07:34) #103795
            └ Re[7]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/31(Thu) 10:48) #103796
              └ Re[8]: Visual Basicで簡易CADを作成 / shiro (25/08/01(Fri) 06:15) #103797
                ├ Re[9]: Visual Basicで簡易CADを作成 / kiku (25/08/01(Fri) 08:47) #103798
                │└ Re[10]: Visual Basicで簡易CADを作成 / shiro (25/08/02(Sat) 03:40) #103803
                └ Re[9]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/01(Fri) 10:46) #103800
                  ├ Re[10]: Visual Basicで簡易CADを作成 / kiku (25/08/01(Fri) 10:50) #103801
                  └ Re[10]: Visual Basicで簡易CADを作成 / shiro (25/08/02(Sat) 03:38) #103802
                    └ Re[11]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/03(Sun) 11:50) #103805
                      └ Re[12]: Visual Basicで簡易CADを作成 / shiro (25/08/04(Mon) 05:10) #103806
                        └ Re[13]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/04(Mon) 11:36) #103808
                          └ Re[14]: Visual Basicで簡易CADを作成 / shiro (25/08/04(Mon) 18:59) #103811
                            └ Re[15]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/04(Mon) 19:43) #103812
                              └ Re[16]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 12:42) #103814
                                └ Re[17]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 12:44) #103815
                                  └ Re[18]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/05(Tue) 18:02) #103817
                                    └ Re[19]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 19:28) #103819
                                      └ Re[20]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/05(Tue) 20:39) #103821
                                        └ Re[21]: Visual Basicで簡易CADを作成 / shiro (25/08/06(Wed) 12:22) #103822
                                          └ Re[22]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 14:42) #103825
                                            ├ Re[23]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 17:53) #103828
                                            │└ Re[24]: Visual Basicで簡易CADを作成 / shiro (25/08/06(Wed) 19:13) #103830
                                            │  ├ Re[25]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 19:44) #103832
                                            │  │└ Re[26]: Visual Basicで簡易CADを作成 / shiro (25/08/07(Thu) 07:06) #103834
                                            │  │  └ Re[27]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/07(Thu) 12:18) #103835
                                            │  │    └ Re[28]: Visual Basicで簡易CADを作成 / shiro (25/08/07(Thu) 19:14) #103836
                                            │  │      └ Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/07(Thu) 20:25) #103837 ←Now
                                            │  │        ├ Re[30]: Visual Basicで簡易CADを作成 / shiro (25/08/08(Fri) 03:34) #103838
                                            │  │        └ Re[30]: Visual Basicで簡易CADを作成 / shiro (25/08/08(Fri) 07:29) #103839
                                            │  │          └ Re[31]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/08(Fri) 09:40) #103841
                                            │  │            └ Re[32]: Visual Basicで簡易CADを作成 / shiro (25/08/09(Sat) 05:05) #103842
                                            │  │              └ Re[33]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/09(Sat) 14:24) #103843
                                            │  │                └ Re[34]: Visual Basicで簡易CADを作成 / shiro (25/08/09(Sat) 19:18) #103844
                                            │  └ Re[25]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 19:53) #103833
                                            └ Re[23]: Visual Basicで簡易CADを作成 / shiro (25/08/18(Mon) 12:41) #103847
                                              └ Re[24]: Visual Basicで簡易CADを作成 / kiku (25/08/20(Wed) 15:09) #103848
                                                └ Re[25]: Visual Basicで簡易CADを作成 / shiro (25/08/20(Wed) 18:35) #103849
                                                  └ Re[26]: Visual Basicで簡易CADを作成 / kiku (25/08/21(Thu) 09:03) #103850
                                                    └ Re[27]: Visual Basicで簡易CADを作成 / shiro (25/08/21(Thu) 22:01) #103851
                                                      └ Re[28]: Visual Basicで簡易CADを作成 / kiku (25/08/22(Fri) 08:45) #103852
                                                        └ Re[29]: Visual Basicで簡易CADを作成 / shiro (25/08/22(Fri) 13:20) #103853
                                                          └ Re[30]: Visual Basicで簡易CADを作成 / kiku (25/08/22(Fri) 16:45) #103854
                                                            └ Re[31]: Visual Basicで簡易CADを作成 / shiro (25/08/22(Fri) 20:33) #103855
                                                              └ Re[32]: Visual Basicで簡易CADを作成 / kiku (25/08/25(Mon) 08:42) #103857

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信