MATLAB における .NET イベントの使用
以下の例では、関数 addlistener
を使用して、MATLAB® コールバックで .NET イベントを処理します。
.TXT ファイルに対する変更の監視
この例では、System
アセンブリの System.IO.FileSystemWatcher
クラスを使用して、C:\work\temp
フォルダー内の .TXT
ファイルに対する変更を監視します。次のイベント ハンドラー eventhandlerChanged.m
を作成します。
function eventhandlerChanged(source,arg) disp("TXT file changed") end
FileSystemWatcher
オブジェクト fileObj
を作成し、C:\work\temp
フォルダーの .txt
拡張子のファイルの Changed
イベントを監視します。
file = System.IO.FileSystemWatcher("c:\work\temp"); file.Filter = "*.txt"; file.EnableRaisingEvents = true; addlistener(file,"Changed",@eventhandlerChanged);
C:\work\temp
フォルダーの .txt
ファイルへの変更が保存されると、MATLAB に以下のように表示されます。
TXT file changed
FileSystemWatcher
のドキュメンテーションには、単純なファイル操作によって複数のイベントが発生する場合があることが記載されています。
イベント ハンドラーを無効にするには、以下を入力します。
file.EnableRaisingEvents = false;
Windows フォームの ComboBox に対する変更の監視
この例では、Windows® フォームにある ComboBox の値に対する変更をリスニングする方法を示します。この例では、System.Windows.Forms.ComboBox
クラスで定義される SelectedValueChanged
イベントを使用します。
この例を作成するには、サポートされているバージョンの Microsoft® Visual Studio® を使用して、Windows フォーム アプリケーションをビルドしなければなりません。
Microsoft MSDN® の Web サイトで、Windows フォーム アプリケーションについての情報を検索してください。
サポートされているコンパイラの最新の一覧については、サポートされるコンパイラを参照してください。
C:\work
フォルダーに、64 ビットの Windows フォーム アプリケーション myForm
を作成します。ComboBox
コントロールを Form1
に追加し、次に 1 つ以上の項目を ComboBox1
に追加します。アプリケーションをビルドします。
form
プロパティにリスナーを追加するには、次の MATLAB クラス EnterComboData
を作成します。このクラスは attachListener
メソッドを使用します。
classdef EnterComboData < handle properties form end methods function x = EnterComboData NET.addAssembly("C:\work\myForm\myForm\bin\x64\Debug\myForm.exe"); x.form = myForm.Form1; Show(x.form) Activate(x.form) end function r = attachListener(x) % create listener r = addlistener( x.form.Controls.Item(0), "SelectedValueChanged", @x.anyChange); end function anyChange(~,~,~) % listener action if comboBox changes disp("Field updated") end end end
以下の MATLAB コマンドを実行するには、アプリケーション myForm.exe
を作成し、読み込まなければなりません。フォームを作成し、その attachListener
メソッドを呼び出すには、EnterComboData
クラスを使用します。
form = EnterComboData; form.attachListener;
イベントをトリガーするには、ComboBox のドロップダウン メニューから項目を選択します。MATLAB では次のように表示されます。
Field updated