木構造のような


こんな感じの特殊なツリー構造をリストビューのオーナードローで作ってたら結構時間掛かってしまった…
まあ、この部品の用途は見る人が見ればわかると思いますが、バージョン管理系ですね
普通のツリービューじゃマージされたような表示の仕方は出来ないので新しく作ったら結構面倒で時間が掛かったという…
これから階層ごとに色を分けようと思ってます
しかしまぁ…最近は公開してるプログラムをいじくる時間が取れない
この部品も卒研用だし、授業でプロジェクト組んでやってるWEBシステムもあるし…加えてAndroidの課題が今度から…\(^o^)/
幸いAndroidの課題は自分で作る物を選択できるので比較的簡単そうな目覚まし時計+タイマーを作る事にした
ただ、これだけだと単位が認められない可能性もあったから目覚まし時計機能は止め方に工夫する旨を書いたりした
止める時に四則演算したり、ランダム配置の数字の書かれたボタンを順番で押したり

[.NET] Scrollbarコントロールの問題

C#でScrollbar(VScrollbar, HScrollbar)を使用したときに生じた問題について
スクロールのMaximum値を設定し実際に動かしてみるとなぜかValue値がMaximum値に到達することはなかった
(プログラム的に操作した場合はMAX値まで動くが(例えば.Value = .Maximum)、スクロールのボタンなどを押すと元に戻ってしまう)
理由はわからないが.LargeChange+1をマイナスされた数値が実質のMaximum値になってしまうことが原因のようだ
これが分かれば対処は簡単で…
Maximumを設定する処理の箇所では以下のようにする
(予めLargeChange値は設定しておく)

vScrollBar.Maximum = (本来のMAX値) + vScrollBar.LargeChange - 1;

プログラム的にValue値を動かすような処理を行っている場合の条件式は以下のようにする
(制限しないと意図しない部分までスクロールしてしまいます)

if (vScrollBar.Value < vScrollBar.Maximum - (vScrollBar.LargeChange-1)) { (Valueを加算・減算する処理) }

面倒くさいですが、これでまともに使えるようになります
少しプログラミングメモ的な記事が増えたのでカテゴリ化しました

[.NET] 画像の回転

画像の回転に数学知識が必要で苦労してしまった、サインコサインとかその辺
普通の90度の回転とかはメソッドが用意されてるから簡単だけど自由な角度で回転させようとすると自分で書く必要が…
しかも意外とネット上にあまり使える資料が無かった、というわけで試行錯誤した結果を残しておくことにした。
非効率なせいなのか少し長いコードなので続きに書く

続きを読む →

[.NET] TableLayoutPanel

TableLayoutPanelを初めて使用して変な癖があるようで苦労したので忘れないように書いておく
以降使うかわからないが…
デザイナーからセルを固定数作る分にはこのメモはまったく必要ない
コード内でどうこうしたいとき
ColumnCountで値を指定するとその分の列が作成されるようなのですが
ループで回してみるとIndexの境外…なので次のようにしました

int columnCount = 10;
tableLayoutPanel.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
tableLayoutPanel.ColumnCount = columnCount;
tableLayoutPanel.ColumnStyles.Clear();
for(int i = 0; i < columnCount; i++) { tableLayoutPanel.ColumnStyles.Add(new ColumnStyle( SizeType.Percent, 100 / columnCount)); }


一度すべて消した後自分で追加するようにしています、特に悪いやり方じゃないはず…
見てもらえばわかると思いますが10個の列を作成しています、それぞれの大きさはパーセントで指定するようにオプション指定
同様のことを行でしたい場合もすぐ書き換えることが出来ます

[.NET] D&D処理実装時のメモ

ソフトウェア開発時に変なことで躓いたのでメモる
Windows Vista , 7を使用してドラッグ&ドロップ(以降D&D)の動作が実装されているソフトウェアを開発してた時
正しいファイルをドラッグしても関連するイベントが反応しない、カーソルは禁止マークのまま
正しく動作する条件は以下のようにそろえてある
・AllowDrag=true
・DragEnterイベントにDragEffectをCopyにする動作を追加済み
今回は別のアプリケーションからのD&D動作を実装していた、自アプリ←→自アプリ なら問題は発生しない
Windows Vista以降ではUAC(ユーザアカウント制御)が実装されているせいか、異なる権限のアプリケーション同士で連携が出来ない模様
今回の私の場合「自アプリ」←「エクスプローラ」という図だったが、大体何か開発する場合、権限不足による問題が起きないようにVisualStudioは管理者モードで起動している
そして管理者モードのVSでのデバッグから起動するソフトも管理者モードで動作する
しかしエクスプローラは管理者モードで動いていないために、D&Dが出来ないという状態になった
今回は仕方ないので管理者モードのチェックを外してデバッグ中