データベースだけじゃない2
VisualBasic6.0のことはだいぶ前なので記憶があいまいです。Visual C#(C#)はコンソールアプリとちがい、フォームアプリはさすがにオブジェクト指向プログラミングとしては大変でした。フォーム1つインスタンスを作成しないと開けない。デザイン画面にフォームがあり実行すると表示されるのでつい安心してしまう。裏で自動的にインスタンスが作成されてるのを忘れてしまいます。テキストボックスなどコントロールがたくさんあると大変です。
余談はさておき、今回のアプリはテキストファイルの読込、文字列操作、画像の表示などが主な処理内容なので本質的な部分ではC#でできることは、AccessのVBAでもできないことはありません。
不便だと思ったのは次の2つ
1.NumericUpDownコントロールが使えない 問題ステージ数を入れるために使うが、最大数をセットすればよい。 Accessにはないので、しかたなくコンボボックスに値をセット(AddItem)するのだが、一旦クリアしないといけない。
2.MouseHoverイベントが使えない 選択肢にマウスを当てた時、選択肢の背景色を変えて分かりやすくしたいのですが、MouseMoveしかないので、離れたときの処理が簡単ではありません。選択肢が8つあるので1つ1つ書くのは無駄です。 ネットで調べると複雑な処理をすればMouseHover的なこともできるようだが、理解納得できる内容ではないので自分なりに実現方法を考えて以下のようにしました。
2-1.背景色を変えるためのFunctionを1つ、元に戻すFunctionを1つ作成します。
2-2.選択肢のControls(Index)を調べ、MouseMoveイベントに、背景色を変える関数をIndexを引数に呼び出すコード
2-3.フォームの詳細セクションのMouseMoveイベントに背景色を元に戻す関数をIndexを引数に呼び出すコード
で何とかそれらしい動きを実現できました。
for I=1 to 8で一括処理でもよいが、画面が微妙にちらつくのでやめました。
正解時の処理として、N88BASIC、VisualBasicの時は画像を表示させましたが、C#では他の部分で苦労して疲れてしまったので、とりあえず文字だけで「正解!」と簡単に済ませました。今回は、画像表示にしてみようと思います。
詳細は次回以降にします。
コメントを残す