自作コントロール(矢印)について悩んでいます への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2016/10/13 11:44:38
直線なら、フォームに LineShape を貼るだけで表現できます。
(Microsoft.VisualBasic.PowerPacks 名前空間の LineShape クラス)
ただ、ドラッグ等を考慮するのなら、自前で描画した方が良いでしょう。
矢印画像を用意して伸縮させるのも確かに手ではありますが、
矢尻も伸張してしまうので、LineCap.ArrowAnchor で描画するのが良い気がします。
http://dobon.net/vb/dotnet/graphics/drawarrow.html
(Microsoft.VisualBasic.PowerPacks 名前空間の LineShape クラス)
ただ、ドラッグ等を考慮するのなら、自前で描画した方が良いでしょう。
矢印画像を用意して伸縮させるのも確かに手ではありますが、
矢尻も伸張してしまうので、LineCap.ArrowAnchor で描画するのが良い気がします。
http://dobon.net/vb/dotnet/graphics/drawarrow.html
投稿者 やむちゃ  (社会人)
投稿日時
2016/10/5 21:24:42
とりあえず、矢印コントロールの必要がなくなった為、本質問はクローズとさせていただきます。
投稿者 やむちゃ  (社会人)
投稿日時
2016/9/30 21:37:49
魔界の仮面弁士 様
早々にご回答いただきありがとうございます。
グリッドをTableLayoutPanelからDataGridViewに変更する事は
問題ないかもしれませんが、
基本設計が、矢印を用いる事を前提としている為、
代替案として、セルの背景色で期間を表現するのは、無理そうです。
矢印のコントロールについて、何かご教示いただけると嬉しいです。
以上、宜しくお願いいたします。
早々にご回答いただきありがとうございます。
グリッドをTableLayoutPanelからDataGridViewに変更する事は
問題ないかもしれませんが、
基本設計が、矢印を用いる事を前提としている為、
代替案として、セルの背景色で期間を表現するのは、無理そうです。
矢印のコントロールについて、何かご教示いただけると嬉しいです。
以上、宜しくお願いいたします。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2016/9/30 20:20:13
自分のところでは DataGridView を使いました。
日数が多くなれば横スクロールで対応できますし、固定列も作れますので。
マウスドラッグで範囲選択させてから、
右クリックでメニューを出して確定 or キャンセル。
矢印を描くのではなく、確定期間内のセル背景色を変える事で表現しています。
期間を確定させた後は、データ入力用のダイアログを表示させて完了。
ここでいうデータとは、そちらの仕様で言えば、矢印の下に表示する「3」のことなので、
そちらは範囲を確定させれば、ダイアログなど出さずとも即時確定しますね。
ちなみに入力させたデータは、セルをマージして表示させました。
実際にはマージ機能が無いので、CellPainting イベントを利用して
それっぽく見せただけですけれども。
日数が多くなれば横スクロールで対応できますし、固定列も作れますので。
マウスドラッグで範囲選択させてから、
右クリックでメニューを出して確定 or キャンセル。
矢印を描くのではなく、確定期間内のセル背景色を変える事で表現しています。
期間を確定させた後は、データ入力用のダイアログを表示させて完了。
ここでいうデータとは、そちらの仕様で言えば、矢印の下に表示する「3」のことなので、
そちらは範囲を確定させれば、ダイアログなど出さずとも即時確定しますね。
ちなみに入力させたデータは、セルをマージして表示させました。
実際にはマージ機能が無いので、CellPainting イベントを利用して
それっぽく見せただけですけれども。
投稿者 やむちゃ  (社会人)
投稿日時
2016/9/30 17:32:11
初めて投稿致します(VB.NET初心者です)
┬─┬─┬─┬─┬─
│月│9 │9 │9 │9
┼─┼─┼─┼─┼─
│日│1 │2 │3 │4
┼─┼─┼─┼─┼─
│ ――――→
│ 3
┼─┼─┼─┼─┼─
上の図のようなWBSをVB.NETで作ろうと考えています。
(Windows7Pro & VisualBasic2010)
WBSには進捗を表す矢印コントロールが必要で
以下①~③の機能を考えています。
①マウスでの移動及びサイズ変更が可能とする。
②サイズ変更時は左右方向にしか大きさを変更できないようにする。
③移動及びサイズ変更はグリッド単位とし、グリッドの情報を反映したい。
→上図の場合、9/1~3なので、矢印の下に「3」と表示している。
色々調べて、グリッド部はTableLayoutPanelで
月日の部分は、TableLayoutPanelの各CellにLabelを当てはめています。
肝心の矢印コントロールは、今のところ
・PictureBoxに矢印を書いて、それをユーザーコントロール化する。
→本来はそこにグリッド情報を表示するLabelも必要なのでしょうが
色々難しそうなので、保留にしてます。
くらいしか思い浮かばず悩んでいます。
上記①~③の機能を備えた矢印コントロールを自作するにあたり
皆様の知恵をお貸しいただけませんでしょうか。
宜しくお願い致します。
┬─┬─┬─┬─┬─
│月│9 │9 │9 │9
┼─┼─┼─┼─┼─
│日│1 │2 │3 │4
┼─┼─┼─┼─┼─
│ ――――→
│ 3
┼─┼─┼─┼─┼─
上の図のようなWBSをVB.NETで作ろうと考えています。
(Windows7Pro & VisualBasic2010)
WBSには進捗を表す矢印コントロールが必要で
以下①~③の機能を考えています。
①マウスでの移動及びサイズ変更が可能とする。
②サイズ変更時は左右方向にしか大きさを変更できないようにする。
③移動及びサイズ変更はグリッド単位とし、グリッドの情報を反映したい。
→上図の場合、9/1~3なので、矢印の下に「3」と表示している。
色々調べて、グリッド部はTableLayoutPanelで
月日の部分は、TableLayoutPanelの各CellにLabelを当てはめています。
肝心の矢印コントロールは、今のところ
・PictureBoxに矢印を書いて、それをユーザーコントロール化する。
→本来はそこにグリッド情報を表示するLabelも必要なのでしょうが
色々難しそうなので、保留にしてます。
くらいしか思い浮かばず悩んでいます。
上記①~③の機能を備えた矢印コントロールを自作するにあたり
皆様の知恵をお貸しいただけませんでしょうか。
宜しくお願い致します。
アドバイスありがとうございます。
ただ、この件はLineShapeやRectangleShapeを組み合わせたコントロールを
自作する必要が出てきました。。。
また質問させていただくかも知れませんが、よろしくお願い致します。