dポイントプレゼントキャンペーン実施中!

 プログラミング初心者です。Visual Studioを用いてフォームを作り、C#でコードを組むことになりました。フォームは単純で、3つのボタンがあるだけです。ボタンは1度しか押せなくしてあります。

(その1)任意のボタンを押すとメッセージボックス"A"が現れ、次に残りの2つのうちどれかを押すと新たにメッセージ"B"が、最後のひとつではメッセージ"C"が表示されるようにしたいです。

(その2)応用としてボタンの数を100個に増やし、任意のボタンを1つ押すごとにA→B→C→A→B→Cとメッセージボックスの表示がループして切り替わるようにもしたいです。

 ボタン1を押した時にAが、2を押すとBが表示されるという単純なコードなら分かるのですが、上記のような複雑な場合が入門サイトを見てもわかりません。メソッドの名前だけでも良いので、ヒントを教えて下さい。

A 回答 (2件)

その1



フォーム作成時イベントで変数を0に初期化し、ボタンを押すごとに、その変数をインクリメントすると良い。

ボタンを押すイベント処理は、全部のボタンで共通にして(どのボタンを押しても同じイベントに飛ぶようにして)、以下のようにします。

フォーム作成時イベント
  hensu = 0;

ボタンクリック時イベント
  switch (hensu++) {
  case 0:
    メッセージボックスAの表示;
    hensu++;
    break;
  case 1:
    メッセージボックスBの表示;
    hensu++;
    break;
  case 2:
    メッセージボックスCの表示;
    hensu++;
    break;
  case 3:
    break; //メッセージボックスCの表示が済んでるので何もしない。
  }
  押されたボタン自身(sender)を押せないようにする;

その2

フォーム作成時イベントで変数を0に初期化し、ボタンを押すごとに、その変数をインクリメントすると良い。そして、2になったら0に戻す、とすれば良い。

ボタンを押すイベント処理は、全部のボタンで共通にして(どのボタンを押しても同じイベントに飛ぶようにして)、以下のようにします。

フォーム作成時イベント
  hensu = 0;

ボタンクリック時イベント
  switch (hensu) {
  case 0:
    メッセージボックスAの表示;
    hensu++;
    break;
  case 1:
    メッセージボックスBの表示;
    hensu++;
    break;
  case 2:
    メッセージボックスCの表示;
    hensu = 0;
    break;
  }
  押されたボタン自身(sender)を押せないようにする;

この回答への補足

御回答有難う御座いました。
case1でhensu--とするとAB繰り返し状態にできますね

補足日時:2012/08/01 08:37
    • good
    • 0

押したかどうかをflagA,flagB,flagCを用意して


一度押したらflagAの値を変えて、その値のときに押しても変化しない。
変化するときにはインクリメントしてAからBに変化
他のものを押したときにも同様

最初のうちはフロチャートをちゃんと書きましょう。

Cなら
if N>3 then N=1

if N>3 then
   N=(N/3-int(N/3))*3
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2012/08/01 08:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!