繝励Ο繧ー繝ゥ繝險隱 繧、繝吶Φ繝医∝ァ碑ュイ

Delegate

蝓コ譛ャ

delegate = 蜃ヲ逅繧呈シ邏阪☆繧句、画焚
髢「謨ー繝昴う繝ウ繧ソ(C++)

static class MyClass
{
縲public static void MyFunc1() { }
縲public static void MyFunc2(int prm) { }
縲public static int MyFunc3() { return 100; }
縲public static int MyFunc4(int prm) { return prm; }
}

class Program
{
繝繝ェ繧イ繝シ繝亥ョ」險
縲delegate void MyDelegator1();
縲delegate void MyDelegator2(int prm);
縲delegate int MyDelegator3();
縲delegate int MyDelegator4(int prm);縲縲

縲static void Main(string[] args)
縲{
縲縲繝繝ェ繧イ繝シ繝井ス懈
縲縲MyDelegator1 m1 = new MyDelegator1(MyClass.MyFunc1);
縲縲MyDelegator2 m2 = new MyDelegator2(MyClass.MyFunc2);
縲縲MyDelegator3 m3 = new MyDelegator3(MyClass.MyFunc3);
縲縲MyDelegator4 m4 = new MyDelegator4(MyClass.MyFunc4);
縲縲
縲縲繝繝ェ繧イ繝シ繝井ス懈(竊薙b蜿ッ)
縲縲MyDelegator1 m1 = MyClass.MyFunc1;
縲縲MyDelegator2 m2 = MyClass.MyFunc2;
縲縲MyDelegator3 m3 = MyClass.MyFunc3;
縲縲MyDelegator4 m4 = MyClass.MyFunc4;

縲縲
縲縲螳溯。
縲縲m1();
縲縲m2(prm: 5);
縲縲int ret = m3();
縲縲int ret = m4(prm: 5);
縲}
}

Private Delegate Sub MrDelegate()

Private Class clsDelegate
縲Public Sub Delegated()
縲縲’縺薙%縺悟他縺ー繧後k
縲End Sub
End Class

Private Sub myForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

縲Dim myDelegate As New clsDelegate
縲Dim mrDelegate As MrDelegate = AddressOf myDelegate.Delegated

縲Call mrDelegate.Invoke()

End Sub

繝槭Ν繝√く繝」繧ケ繝

static class MyClass
{
縲public static void MyFunc1() { }
縲public static void MyFunc2() { }
縲public static void MyFunc3() { }
}

class Program
{
縲delegate void MyDelegator();

縲static void Main(string[] args)
縲{
縲縲MyDelegator m = MyClass.MyFunc1;
縲縲
縲縲繝槭Ν繝√く繝」繧ケ繝
縲縲m -= MyClass.MyFunc1;
縲縲m += MyClass.MyFunc2;
縲縲m += MyClass.MyFunc3;
縲縲
縲縲螳溯。
縲縲m();
縲}
}

蛹ソ蜷阪Γ繧ス繝繝

delegate void MyDelegator1();
delegate int MyDelegator2(int prm);

static void Main(string[] args)
{
蛹ソ蜷阪Γ繧ス繝繝
縲MyDelegator1 m1 = delegate
縲{
縲縲var ary = Enumerable.Range(start:1, count:10);
縲縲foreach (var elm in ary) Console.WriteLine(elm);
縲};

蛹ソ蜷阪Γ繧ス繝繝(蠑墓焚/謌サ繧雁、縺ゅj)
縲MyDelegator2 m2 = delegate(int prm)
縲{
縲縲return prm;
縲};

縲m1();
縲int ret = m2(prm: 6);
}

delegate void MyDelegator1();
delegate int MyDelegator2(int prm);

static void Main(string[] args)
{
蛹ソ蜷阪Γ繧ス繝繝
縲MyDelegator1 m1 = () =>
縲{
縲縲var ary = Enumerable.Range(start:1, count:10);
縲縲foreach (var elm in ary) Console.WriteLine(elm);
縲};

蛹ソ蜷阪Γ繧ス繝繝(蠑墓焚/謌サ繧雁、縺ゅj)
縲MyDelegator2 m2 = (prm) =>
縲{
縲縲return prm;
縲};

縲m1();
縲int ret = m2(prm: 6);
}

蛹ソ蜷阪Γ繧ス繝繝(LINQ)

var ary = Enumerable.Range(start: 1, count: 10);
var query = ary.Where(delegate(int prm) {
縲return prm > 5;
}
);
foreach (var elm in query) Console.WriteLine(elm);
竊6 7 8 9 10

var ary = Enumerable.Range(start: 1, count: 10);
var query = ary.Where(n => n > 5);
foreach (var elm in query) Console.WriteLine(elm);
竊6 7 8 9 10

繧、繝吶Φ繝

隕丞ョ壹う繝吶Φ繝

//繧、繝吶Φ繝医r菴懈
private event EventHandler myEvent;
EventHandler シ ス(object sender, EventArgs e)縺ョ蠑墓焚縺梧里縺ォ險ュ螳壹&繧後※縺繧九懊ち繝ウ繧ッ繝ェ繝繧ッ遲臥畑縺ョ繧、繝吶Φ繝

private void myForm_Load(object sender, EventArgs e)
{
縲縲//繧、繝吶Φ繝医r髢「騾」莉倥¢(1)
縲縲myEvent += new EventHandler(this.CatchEvent);
縲縲
縲縲//new EventHander繧堤怐逡・縺励※竊 縺ァ繧ょ庄
縲縲myEvent += this.CatchEvent;
縲縲
縲縲//蛹ソ蜷阪Γ繧ス繝繝俄 縺ォ繧医k險倩ソー繧ょ庄
縲縲//(險倩ソー貂医∩縺ョ繧オ繝悶Ν繝シ繝√Φ繧呈欠螳壹○縺壹√う繝吶Φ繝育匳骭イ縺ィ蜷梧凾縺ォ蜃ヲ逅蜀螳ケ繧呈嶌縺)
縲縲myEvent += delegate
縲縲{
縲縲縲縲蜃ヲ逅蜀螳ケ(2)
縲縲};
縲縲
縲縲//繧、繝吶Φ繝医r逋コ逕溘&縺帙k
縲縲myEvent(this, new EventArgs());
縲縲竍(1)縲(2)縺悟ョ溯。後&繧後k
}

private void CatchEvent(object sender, EventArgs e)
{
縲縲//縺薙%縺悟他縺ー繧後k
}

‘繧、繝吶Φ繝医r菴懈
Private Event myEvent()

Private Sub myForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

縲縲’繧、繝吶Φ繝医→繧オ繝悶Ν繝シ繝√Φ繧帝未騾」莉倥¢繧
縲縲AddHandler myEvent, AddressOf CatchEvent
縲縲
縲縲’繧、繝吶Φ繝医r逋コ逕溘&縺帙k
縲縲RaiseEvent myEvent()
縲縲
End Sub

Private Sub CatchEvent()
縲縲’縺薙ョ繧オ繝悶Ν繝シ繝√Φ縺悟他縺ー繧後k
End Sub

逕サ髱「菴懈

import java.awt.*;

public class myjava
{
縲public static void main (String[] args)
縲{

縲縲Frame f = new Frame();
縲縲f.setLayout(null);
縲縲
縲縲Label l = new Label("Hello");
縲縲l.setBounds(20,40,100,20);
縲縲縲x蠎ァ讓吶【蠎ァ讓, 讓ェ蟷, 邵ヲ蟷
縲縲縲f.add(l,BorderLayout.CENTER);
縲縲
縲縲Button b = new Button("OK");
縲縲b.setBounds(20,100,100,20);
縲縲f.add(b);
縲縲
縲縲TextField t = new TextField();
縲縲t.setBounds(20,150,100,20);
縲縲f.add(t);
縲縲
縲縲f.setSize(200,200);
縲縲f.setVisible(true);
}
}

繧、繝吶Φ繝亥ョ夂セゥ

import java.awt.*;
import java.awt.event.*;

public class myjava
{
縲public static void main (String[] args)
縲{

縲縲Frame f = new Frame();
縲縲f.setLayout(null);

縲縲
縲縲Button b = new Button("OK");
縲縲b.setBounds(20,100,100,20);
縲縲b.addActionListener(new MyButtonAction());
縲縲f.add(b);
縲縲
縲縲f.setSize(200,200);
縲縲f.setVisible(true);

}
}

class MyButtonAction implements ActionListener {

繝。繧ス繝繝牙錐縺ッActionListener繧、繝ウ繧ソ繝シ繝輔ぉ繧、繧ケ螳夂セゥ縺ォ繧医j蝗コ螳
縲public void actionPerformed(ActionEvent e){
縲縲System.out.println("繧ッ繝ェ繝繧ッ縺励∪縺励◆シ");
縲}
}

繧、繝吶Φ繝井ク隕ァ
ActionListener
繝懊ち繝ウ繧ッ繝ェ繝繧ッ
繝繧ュ繧ケ繝医ヵ繧」繝シ繝ォ繝峨〒Enter繧ュ繝シ謚シ荳
繝。繝九Η繝シ繧「繧、繝繝驕ク謚

WindowListener
繝輔Ξ繝シ繝髢峨§繧

MouseListener
繝槭え繧ケ謚シ荳

MouseMotionListener
繝槭え繧ケ繧貞虚縺九☆

FocusListener
繝輔か繝シ繧ォ繧ケ

ListSelectionListener
繝繝シ繝悶Ν縲√Μ繧ケ繝医ョ驕ク謚槫、画峩


<button id="myButton">button</button>

繧、繝吶Φ繝医ワ繝ウ繝峨Λ繝シ
ス.onClick = ス
onClick繝励Ο繝代ユ繧」繧剃ク頑嶌縺
蜷梧ァ倥↓險ュ螳壹@縺溘う繝吶Φ繝医励Ο繝代ユ繧」繧貞挨繧、繝吶Φ繝医励Ο繝代ユ繧」縺ァ荳頑嶌縺阪&繧後k蜊ア髯コ縺後≠繧九


<script type="text/javascript">
縲縲document.getElementById("myButton").onclick = function(){
縲縲縲縲window.alert("Hello World");
縲縲};
</script>

繧、繝吶Φ繝医Μ繧ケ繝翫シ
addEventListener(繧、繝吶Φ繝, 髢「謨ー蜷1, false)
addEventListener(繧、繝吶Φ繝, 髢「謨ー蜷2, false)
addEventListener(繧、繝吶Φ繝, 髢「謨ー蜷3, false)
隍謨ー縺ョ髢「謨ー繧堤匳骭イ縺ァ縺阪∽ク頑嶌縺阪&繧後k蜊ア髯コ縺ッ辟。縺

var BrowserType;
if (window.addEventListener){
縲縲BrowserType = "All";
}else if (window.attachEvent){
縲縲BrowserType = "IE";
}else{
縲縲BrowserType = "Other";
}

var myFunc = function(e){
繧、繝吶Φ繝医Μ繧ケ繝翫シ縺檎匱逕溘@縺溘ち繧ー蜷阪r蜿門セ
縲var myTag = e.target.tagName;

繧、繝吶Φ繝医ヵ繝ュ繝シ繧剃クュ譁ュ(繝繝輔か繝ォ繝医い繧ッ繧キ繝ァ繝ウ縺ッ螳溯。後&繧後k)
縲e.stopPropagation();
窶サ隕ェ隕∫エ縺ョ繧、繝吶Φ繝医′逋コ逕溘@縺ェ縺

繝繝輔か繝ォ繝医い繧ッ繧キ繝ァ繝ウ繧剃クュ豁「
縲e.preventDefault();
}

ス.addEventListener("click" , myFunc, ス);

迢ャ閾ェ繧、繝吶Φ繝

迢ャ閾ェ繧、繝吶Φ繝育畑delegate螳」險
delegate void MyDelegator();

class MyClass
{
迢ャ閾ェ縺ョ繧、繝吶Φ繝
縲public event MyDelegator SomeEvent;

縲public void Fire()
縲{
縲縲if (this.SomeEvent == null) return;
縲縲繧、繝吶Φ繝育匱逕
縲縲SomeEvent();
縲}
}

static void Main(string[] args)
{

縲MyClass m = new MyClass();
縲m.SomeEvent += delegate { Console.WriteLine(ス); };
縲m.Fire();
}

event繧ュ繝シ繝ッ繝シ繝臥┌縺励ョ蝣エ蜷

迢ャ閾ェ繧、繝吶Φ繝育畑delegate螳」險
delegate void MyDelegator();

class MyClass
{
迢ャ閾ェ縺ョ繧、繝吶Φ繝(event繧ュ繝シ繝ッ繝シ繝臥┌縺)
縲public MyDelegator SomeEvent;

縲public void Fire()
縲{
縲縲if (this.SomeEvent == null) return;
縲縲繧、繝吶Φ繝育匱逕
縲縲SomeEvent();
縲}
}

static void Main(string[] args)
{

縲MyClass m = new MyClass();

縲+=縲-= 縺ォ繧医k繧、繝吶Φ繝育匳骭イ(繝ェ繧ケ繝亥喧)縺悟シキ蛻カ縺輔l繧
m.SomeEvent = MyFunc縲シ堙;
縲m.SomeEvent = delegate { return; }縲シ堙
;

縲m.SomeEvent += MyFunc;縲シ壺雷;
縲m.SomeEvent += delegate { return; };縲シ壺雷;

縲m.Fire();
}

繧、繝吶Φ繝医Μ繧ケ繝翫シ

addEventListener縺ョ隨ャ荳牙シ墓焚(true/false)
<div id="myDiv">
縲<button id="myButton"></button>
</div>

<script>
縲var myDiv = document.getElementById('myDiv');
縲var myButton = document.getElementById('myButton');

縲縲診alse縺ョ蝣エ蜷医
縲myDiv.addEventListener("click" , 髢「謨ーDiv , false);
縲myButton.addEventListener("click" , 髢「謨ーButton , false);
窶サ蟄(髢「謨ーButton)竊定ヲェ(髢「謨ーDiv)縺ョ鬆縺ァ螳溯。後&繧後k

縲縲腎rue縺ョ蝣エ蜷医
縲myDiv.addEventListener("click" , 髢「謨ーDiv , true);
縲myButton.addEventListener("click" , 髢「謨ーButton , false);
窶サ隕ェ(髢「謨ーDiv)竊貞ュ(髢「謨ーButton)縺ョ鬆縺ァ螳溯。後&繧後k
縲窶サtrue縺悟━蜈医@縺ヲ螳溯。後&繧後k

</script>

繧、繝吶Φ繝医が繝悶ず繧ァ繧ッ繝
繧、繝吶Φ繝医Μ繧ケ繝翫シ縺ョ逋コ逕滓凾縺ォ蠑墓焚繧定ェ蜍輔〒蜿門セ励〒縺阪k縲
繧、繝吶Φ繝医が繝悶ず繧ァ繧ッ繝茨シ啼縺ォ縺ッ繧、繝吶Φ繝域ュ蝣ア縺梧シ邏阪&繧後※縺繧
var myFunc = function(e){

繧、繝吶Φ繝医Μ繧ケ繝翫シ縺檎匱逕溘@縺溘ち繧ー蜷阪r蜿門セ
縲var myTag = e.target.tagName;

繧、繝吶Φ繝医ヵ繝ュ繝シ繧剃クュ譁ュ(繝繝輔か繝ォ繝医い繧ッ繧キ繝ァ繝ウ縺ッ螳溯。後&繧後k)
縲e.stopPropagation();
窶サ隕ェ隕∫エ縺ョ繧、繝吶Φ繝医′逋コ逕溘@縺ェ縺

繝繝輔か繝ォ繝医い繧ッ繧キ繝ァ繝ウ繧剃クュ豁「
縲e.preventDefault();
}

ス.addEventListener(繧、繝吶Φ繝亥錐, myFunc, ス);
窶サ蜻シ縺カ蛛エ縺ァ縺ッ縲ス.addEventListener(繧、繝吶Φ繝亥錐, myFunc(e), ス); 縺ィ縺励↑縺

WithEvents

Public Class myForm

縲Private Class clsEvent
縲縲Public Event TestEvent()
縲縲Public Sub CauseEvent()
縲縲縲RaiseEvent TestEvent()
縲縲End Sub
縲End Class

縲’繧、繝吶Φ繝医r繧、繝ウ繧ケ繧ソ繝ウ繧ケ蛹
縲Private WithEvents myEvent As New clsEvent

縲Private Sub myForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
縲縲Call myEvent.CauseEvent()
縲End Sub

縲Private Sub CatchEvent() Handles myEvent.TestEvent
縲縲’縺薙ョ繧オ繝悶Ν繝シ繝√Φ縺悟他縺ー繧後k
縲End Sub

End Class

Delegate縺ィevent縺ョ驕輔>

//public縺ェdelegate繧剃ス懈
public delegate int LonlyDelegator(string str);

//event蝙掬elegate繧剃ス懈
private class clsDelegate{
縲縲public delegate int Delegator(string str);

縲縲//event莉倥″縺ァ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧剃ス懈
縲縲public event Delegator delegator;

縲縲//蟋碑ュイ蜃ヲ逅螳溯。檎畑繝。繧ス繝繝
縲縲public void CauseEvent(string str)
縲縲{
縲縲縲縲if (delegator == null) { return; }
縲縲縲縲//蟋碑ュイ縺励◆蜃ヲ逅繧貞ョ溯。
縲縲縲縲delegator(str);
縲縲}
}
//EventHandler繧弾vent螳」險縺吶k諢丞袖縺ッ蜈ィ縺丈ク肴寂ヲ縲
public event EventHandler Eventer;

private void myForm_Load(object sender, EventArgs e)
{
縲縲//Public縺ェdelegate縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧剃ス懈
縲縲LonlyDelegator myLonlyDelegate = new LonlyDelegator(this.myFunction1);
縲縲//竊灘ヲ逅縺ッevent蝙九〒縺ッ繧ィ繝ゥ繝シ
縲縲myLonlyDelegate = this.myFunction2;
縲縲//竊灘ヲ逅縺ッevent蝙九〒縺ッ繧ィ繝ゥ繝シ
縲縲myLonlyDelegate(“Hello”);

縲縲//delegate逕ィ繧ッ繝ゥ繧ケ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧剃ス懈
縲縲clsDelegate myDelegate = new clsDelegate();
縲縲
縲縲//event蛻カ髯絶蔵シ+=縺ァ縺ェ縺縺ィ繧、繝吶Φ繝医r霑ス蜉縺ァ縺阪↑縺上↑繧九
縲縲myDelegate.delegator += this.myFunction1;
縲縲myDelegate.delegator += this.myFunction2;

縲縲//event蛻カ髯絶贈シ單elegate螳」險縺励◆繧ッ繝ゥ繧ケ蜀縺ァ蟋碑ュイ縺励◆蜃ヲ逅繧貞ョ溯。
縲縲//(myDelegate.delegator(“Hello”); 縺ョ讒倥↓譖ク縺縺ヲ逶エ謗・蟋碑ュイ縺励◆蜃ヲ逅繧貞ョ溯。後〒縺阪↑縺)
縲縲myDelegate.CauseEvent(“Hello”);
縲縲
縲縲
縲縲Eventer += new EventHandler(this.myFunction3);
縲縲Eventer(this, new EventArgs());
縲縲
縲縲//竊摘ventHandler縺ョ螳夂セゥ(delegate縺ィ縺励※螳」險縺輔l縺ヲ縺翫j縲∝シ墓焚繧ょ崋螳壹&繧後※縺繧)
縲縲//public delegate void EventHandler(object sender, EventArgs e);
縲縲EventHandler myEvent = new EventHandler(this.myFunction3);
縲縲myEvent += this.myFunction4;
縲縲myEvent(this, new EventArgs());
縲縲
}

private int myFunction1(string str)
{
縲縲return 1;
}
private int myFunction2(string str)
{
縲縲return 2;
}

//EventHandler縺ァ逋コ逕溘&縺帙k繧、繝吶Φ繝医ッ竊薙ョ蠑墓焚繧呈戟縺、蠢隕√′縺ゅk
private void myFunction3(object sender, EventArgs e)
{
縲縲int i = 5;
}
private void myFunction4(object sender, EventArgs e)
{
縲縲int i = 10;
}

Windows繝輔か繝シ繝

繧、繝吶Φ繝育匱逕滄蠎

縲植pplication襍キ蜍墓凾縲

Control.HandleCreated
繧ウ繝ウ繝医Ο繝シ繝ォ縺ォ蟇セ縺励※繝上Φ繝峨Ν縺御ス懈舌&繧後k縺ィ逋コ逕

Control.BindingContextChanged
BindingContext 繝励Ο繝代ユ繧」縺ョ蛟、縺悟、牙喧縺励◆縺ィ縺阪↓逋コ逕
繝輔か繝シ繝縺ョ繧、繝九す繝」繝ゥ繧、繧コ譎ゅ↓繧ウ繝ウ繝繧ュ繧ケ繝医↓縺昴ョTextBox縺後ヰ繧、繝ウ繝峨@縺溘→縺阪↓逋コ逕 (TextBox繧ウ繝ウ繝医Ο繝シ繝ォ縺ョBindingContextChanged繧、繝吶Φ繝医↓縺、縺縺ヲ)

Form.Load
繝輔か繝シ繝縺悟昴a縺ヲ陦ィ遉コ縺輔l繧狗峩蜑阪↓逋コ逕

Control.VisibleChanged
Visible 繝励Ο繝代ユ繧」縺ョ蛟、縺悟、画峩縺輔l縺溷エ蜷医↓逋コ逕

Form.Activated
繝輔か繝シ繝縺後さ繝シ繝牙縺セ縺溘ッ繝ヲ繝シ繧カ繝シ縺ョ謫堺ス懊↓繧医▲縺ヲ繧「繧ッ繝繧」繝悶↓縺ェ繧九→逋コ逕

Form.Shown
繝輔か繝シ繝縺悟昴a縺ヲ陦ィ遉コ縺輔l繧九◆縺ウ縺ォ逋コ逕

縲植pplication邨ゆコ譎ゅ

Form.Closing
繝輔か繝シ繝縺碁哩縺倥※縺繧矩俣縺ォ逋コ逕

Form.FormClosing
繝輔か繝シ繝縺碁哩縺倥k蜑阪↓逋コ逕

Form.Closed
繝輔か繝シ繝縺碁哩縺倥◆縺ィ縺阪↓逋コ逕

Form.FormClosed
繝輔か繝シ繝縺碁哩縺倥◆蠕後↓逋コ逕

Form.Deactivate
繝輔か繝シ繝縺後ヵ繧ゥ繝シ繧ォ繧ケ繧貞、ア縺縲√い繧ッ繝繧」繝悶〒縺ェ縺上↑繧九→逋コ逕

縲舌励Ο繧ー繝ゥ繝襍キ蜍墓凾シ壹ヵ繧ゥ繝シ繝繧、繝吶Φ繝医
Initialize()
Load()
Resize()
Activate()
GotFocus()
Paint()

縲舌槭え繧ケ繧、繝吶Φ繝医
MouseDown()
MouseUp()
Click()
MouseMove()
DblClick()
MouseUp()

縲舌く繝シ繧、繝吶Φ繝医
窶サForm.KeyPreview = False 譎

(TextBox荳翫〒)繧ュ繝シ蜈・蜉

TextBoxシ哮eyDown

TextBoxシ哮eyPress

TextBoxシ哮eyUp

窶サForm.KeyPreview = True 譎

(TextBox荳翫〒)繧ュ繝シ蜈・蜉

Formシ哮eyDown

TextBoxシ哮eyDown

Formシ哮eyPress

TextBoxシ哮eyPress

Form_KeyUp

TextBoxシ哮eyUp

窶サForm.KeyPreview = True 譎

(TextBox荳翫〒)繧ュ繝シ蜈・蜉

Formシ哮eyDown

TextBoxシ哮eyDown

Formシ哮eyPress
KeyAscii = 0(繧ュ繝シ謫堺ス懊ョ蜿悶j豸医@)

(TextBoxシ哮eyPress) 窶サ逋コ逕溘@縺ェ縺

Form_KeyUp

TextBoxシ哮eyUp

縲舌ヵ繧ゥ繝シ繧ォ繧ケ驕キ遘サ譎ゅ
MouseDown()
Activate()
GotFocus()
MouseUp()
Click()
Paint()

縲舌励Ο繧ー繝ゥ繝邨ゆコ譎ゑシ壹ヵ繧ゥ繝シ繝繧、繝吶Φ繝医
QueryUnload()
Unload()
Terminate()

窶サUnload()縺励↑縺縺ィ縲√ヵ繧ゥ繝シ繝縺ョLoad()繧、繝吶Φ繝医ッ逋コ逕溘@縺ェ縺縲

ApplicationExit繧、繝吶Φ繝

Form_Load(ス)
{

縲縲//ApplicationExit繧、繝吶Φ繝医ワ繝ウ繝峨Λ繧定ソス蜉
縲縲Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
縲縲
縲縲// Application邨ゆコ
縲縲Application.ApplicationExit;
}

//ApplicationExit繧、繝吶Φ繝医ワ繝ウ繝峨Λ
private void Application_ApplicationExit(object sender, EventArgs e)
{
縲縲縺薙%縺ォ蜃ヲ逅縺檎ァサ繧九
縲縲
縲縲//ApplicationExit繧、繝吶Φ繝医ワ繝ウ繝峨Λ繧貞炎髯、
縲縲Application.ApplicationExit -= new EventHandler(Application_ApplicationExit);
}

DoEvents

WindowsOS縺ォ縺翫>縺ヲ縲^S縺ォ蛻カ蠕。繧呈綾縺(蠕讖滉クュ縺ョ蜃ヲ逅繧貞ョ溯。後&縺帙k)蜻ス莉、
ForLoop譁繧繧ソ繧、繝槭シ蜃ヲ逅遲峨√◎縺ョ蜃ヲ逅縺檎オゅo繧九∪縺ァ縺ッCPU繧貞ーよ怏縺吶k蜃ヲ逅縺ォ縺翫>縺ヲ菴ソ逕ィ縺吶k縲
縺ェ縺翫励Ο繧ー繝ゥ繝繧剃クュ譁ュ縺励^S縺梧コ懊∪縺」縺ヲ縺繧九ち繧ケ繧ッ繧貞ョ溯。後@縺溽オ先棡縲√励Ο繧ー繝ゥ繝縺ォ蠖ア髻ソ繧剃ク弱∴縺ヲ縺励∪縺蜊ア髯コ縺後≠繧狗ぜ謗ィ螂ィ縺輔l縺ェ縺縲
繝槭Ν繝√せ繝ャ繝繝牙ヲ逅縺悟庄閭ス縺ェ險隱槭〒縺ッ蛻・繧ケ繝ャ繝繝峨〒蜃ヲ逅縺吶k縲

繝槭え繧ケ繧ォ繝シ繧ス繝ォ

譎る俣縺ョ謗帙°繧句ヲ逅荳ュ縺ォ逕サ髱「陦ィ遉コ繧貞、画峩縺吶k繝繧ッ繝九ャ繧ッ

繧ォ繝シ繧ス繝ォ繧貞セ讖溘き繝シ繧ス繝ォ縺ォ螟画峩
Cursor.Current = Cursors.WaitCursor;

繧ォ繝シ繧ス繝ォ繧貞縺ォ謌サ縺
Cursor.Current = Cursors.AppStarting;

DataBindings

private class MyClass : INotifyPropertyChanged
{
縲string _myData;

myData縺ョ螟画峩繧帝夂衍縺吶k螳夂セゥ貂医∩delegate
縲public event PropertyChangedEventHandler PropertyChanged;
縲protected void notifyPropertyChanged(string info)
縲{
縲縲if (this.PropertyChanged != null)
縲縲縲PropertyChanged(sender: this, e: new PropertyChangedEventArgs(info));
縲}

縲public string myData
縲{
縲縲get { return this._myData; }
縲縲set
縲縲{
縲縲縲if (value != this._myData)
縲縲縲{
縲縲縲縲this._myData = value;
縲縲縲縲this.notifyPropertyChanged(info: @"myData");
縲縲縲}
縲縲}
縲}
}

private MyClass _person;

private void Form1_Load(object sender, EventArgs e)
{
縲_person = new MyClass();

縲this.textMyData.DataBindings.Add(
縲縲propertyName: "text",
縲縲dataSource: _person,
縲縲dataMember: "myData");
}

private void button1_Click(object sender, EventArgs e)
{
縲string myData = _person.myData;
窶サtextMyData.text縺ョ螟画峩蜀螳ケ縺契person.myData縺ォ譬シ邏阪&繧後※縺繧

縲_person.myData = "螟画峩蠕";
窶サ_person.myData縺ョ螟画峩蜀螳ケ縺荊extMyData.text縺ォ譬シ邏阪&繧後k
}

Follow me!