Hatena::ブログ(Diary)

おおたに6号機blog このページをアンテナに追加 RSSフィード

2008-07-17(木)

[]エンジニア未来サミット開催概要 11:47 エンジニアの未来サミット開催概要を含むブックマーク


アルファギーク学生の交流会、および大体30代前後のエンジニアやデザイナなど

様々な職種の方々と学生の交流会が開催されます。

参加申し込みは7月18日(金)からです。


かつては日本の基幹を担うと言われたIT(Infomation Technology)業界

しかし,いつの間にか「3K,5K」「35歳定年説」など,ネガティブイメージが定着し,さらに最近イベントで物議を

醸した「エンジニア最初の10年のキャリア」についてのさまざまな議論から,IT業界の将来すら不安視されることが増えてきました。

でも,実際のところはどうなのでしょうか?

サミットでは,これからIT業界を目指す学生,また今IT業界に入ってきた若手エンジニアデザイナーの皆さんからの疑問や不安に対し,

業界リードする「アルファギーク」の面々,そして今活躍している30代前後のエンジニア,いわゆる7x,8x世代の方々がお応えします。

彼らが語るIT業界の今,さらに実際の仕事への取り組み方やエンジニアの魅力について語る熱いメッセージをぜひお聞きください。

http://gihyo.jp/event/2008/engineer

登壇者だけでなく、全体としていろいろな意見などがやり取りできたらいいなと思っています。

学生さんだけでなく若手の皆さんも対象にしているので、みなさまふるってご参加ください^^


Around thirty(あらさー)との交流会もあります。

http://d.hatena.ne.jp/higayasuo/20080717/1216258104

ひがさんの告知のところで、知った。

30代前後のこと、アラサーって言うんですね、しらんかった^^;アラフォーは知ってたけども。

[]Silverlight2入門記3 - イベントをコードで割り当てる - 13:52 Silverlight2入門記3 - イベントをコードで割り当てる -を含むブックマーク

前回から一日空いてしまいました。心より恥じる。

前回は無事足し算が出来ました。足し算ではVSにお任せでイベントハンドラをxaml側で設定していました。

今回は、C#側のコードでイベントハンドラを設定してみます。


一番簡単にコードでイベントハンドラを足すには、Pageのコンストラクタで足すのが一番です。

ただし注意点が1点。InitializeComponentメソッドが呼び出された後でないと

xaml側の構成情報がロードされていません。

なので、何かイベントを足したいならInitializeComponentメソッドの後に記載します。

(実際InitializeComponentメソッドの前にやったら、画面に何も表示されませんでした)

実際に足して見ます。

イベントを記載するときはVSのインテリセンスにおまかせするのが良いみたいです。

たとえば

aaa.MouseEnter +=

とまで打てば、候補が出るのでTabで自動生成してやれば、EventHandlerインスタンスと

割り当てるイベントリスナまで自動で生成してくれます。これは便利。

たとえばaaaというキャンバスのMouseEnterイベントのハンドラは以下のようになります。

            aaa.MouseEnter += new MouseEventHandler(aaa_MouseEnter);
……
        void aaa_MouseEnter(object sender, MouseEventArgs e)
        {
        }

ではコードをみてみます。

xamlは下記のようになります。

<UserControl x:Class="EventAdding.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Canvas x:Name="aaa" Width="400" Height="500" Background="LightGreen">
        <TextBlock x:Name="moge">aaa</TextBlock>
    </Canvas>
</UserControl>

コードによってイベントを足しこんだコードビハインドのクラスは下記のようになります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace EventAdding
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            aaa.MouseEnter += new MouseEventHandler(aaa_MouseEnter);
            aaa.MouseLeave += new MouseEventHandler(aaa_MouseLeave);
        }

        void aaa_MouseLeave(object sender, MouseEventArgs e)
        {
            moge.Text = "はなれた。";
        }

        void aaa_MouseEnter(object sender, MouseEventArgs e)
        {
            moge.Text = "うはははは!";
        }

    }
}

静的に決まるイベントに関してはあまりコードで登録することも無いでしょうが、

動的にイベントを発生させたりさせなかったりするときはコードで足すテクニックは使いそうです。


(追記)

補足。

どうやらイベントを差し引くときには-=でいける模様。

先ほどのSilverlightアプリケーションにボタンをおしたらイベントを発生させないようにしてみた。


<UserControl x:Class="EventAdding.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Canvas x:Name="aaa" Width="400" Height="500" Background="LightGreen">
        <TextBlock x:Name="moge">aaa</TextBlock>
        <Button x:Name="button" Content="hogehoge" Canvas.Top="40" Click="button_Click"/>
    </Canvas>
</UserControl>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace EventAdding
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            aaa.MouseEnter += new MouseEventHandler(aaa_MouseEnter);
            aaa.MouseLeave += new MouseEventHandler(aaa_MouseLeave);
        }

        void aaa_MouseLeave(object sender, MouseEventArgs e)
        {
            moge.Text = "はなれた。";
        }

        void aaa_MouseEnter(object sender, MouseEventArgs e)
        {
            moge.Text = "うはははは!";
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            aaa.MouseEnter -= new MouseEventHandler(aaa_MouseEnter);
            aaa.MouseLeave -= new MouseEventHandler(aaa_MouseLeave);
        }

    }
}