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