青の部隊 505小隊 ULZ

二日目

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集
さて、ウィンドウを表示したい!といって、結局リファレンスページ見つけて終わった一日目でした。

どうも、VC#でWindowsプロジェクトを作成すると、ダイアログアプリケーションの雛型が出来上がる模様。
じゃあ、ダイアログアプリケーションの基本、電卓を作ろうということになりました。
はいこれ今日の目標。

プロジェクトを作成すると、いきなりGUIデザイナが開きます。

コントロールの追加

パレットが見つからない。どこにあるんだ?
適当にいじった結果、メニューバーから、表示-ツールボックス でパレットが出る模様。
適当にボタンとかを追加しました。
ボタンの文字変更とかは、プロパティを表示して、それっぽいものを変更しました(TEXTプロパティを変更)。

[図1]

コードは?

どうも、コントロールをダブルクリックするとコードが表示されるご様子。
適当にいじくりまわした結果、どうなっているのかというと……。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace step001
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Number7_Click(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

あれま、Number7_Click()ってなんだ?
じつは、最初に7のボタンを追加して、ラベルをどうやって変えるんだーっていじってるときに、
間違ってnameプロパティを変更しちゃったんですね。で、nameを7にしたら、エラーですよ。
あーこれはコードに現れる識別子だったんだろうなと思って、Number7と直しておいたわけです。
で、今の状況。どのボタンを押してもNumber7_Clickがフォーカスされます。
ボタン処理が全部同じメソッドに割り当てられるというのはなかなかクールですが、ありえない名前になっちゃいました。どうしよう。

コードをちょこっと開いてみると、Form1.Designer.csなるファイルの中に、すべてのボタンにNumber7_Clickを登録するコードが。しかもデザイナサポートできなくなるから編集するなと書いてある。
VSのコード自動生成は凶悪だけど、一度コードとデザイナとの関連が途切れてしまうとかなりおつなことになります。ぶっちゃけプロジェクト立ち上げなおした(やりなおした)方がいいんじゃないかと思うくらい。
自動生成コードは絶対さわっちゃだめです。
けど、触んなくてもユーザー側の予期せぬ動作によって途切れちゃうことがあるんだよなぁ。あれはほんまきつい。
(NZ-000)
うむ、よくわかる。だからGUIデザイナって嫌いなんだよね。
だからJAVAはコードで簡単に画面作れて便利だった。
でもこれって発展途上だから、近いうちにバグらないインテリジェンスなデザイナになると思うよ。
(pun)

プロパティにも振る舞い指定するような要素が見当たらないので、今回は場当たり的対策として、リファクタリングすることにしました。コードエディタでNumber7_Clickを右クリック、リファクタ-名前の変更 で名前をButton_Clickに変更しました。本当は演算ボタンと入力ボタンで違うコードを実行するようにしたいのですが……あきらめます。
コントロールの割り当てられているイベント処理は、デザイナ上ではコントロールのプロパティの稲妻マークをクリックすることで確認できるぽ。
ちなみに新たなイベント処理の登録とか編集も大抵そこで行います。
(NZ-000)
おお~~。Thanks!
(pun)

まとめ

メニューバー-表示-ツールボックスで、GUIデザイナにコントロールを配置するためのパレットが表示される。

パレットからフォームへコントロールをドラッグすると、コントロールが配置される。

コントロール上で右クリック-プロパティで、コントロールの属性が表示される。

ボタンコントロールの(name)プロパティはコード上の識別子を表す。

ボタンコントロールのtextは、ボタン上に表示される文字列を表す。

同一コンテナに配置した同種の複数のコントロールの振る舞いは、ひとつのメソッドと関連付けられるようだ。

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー