Tcl/Tkこのブログの紹介DataGridViewをActiveXコントロールにラップしてTcl/Tkのウィンドウに埋め込む(3)コメントを残すこれまでの経緯DataGridViewをActiveXコントロールにラップしてTcl/Tkのウィンドウに埋め込む(1)DataGridViewをActiveXコントロールにラップしてTcl/Tkのウィンドウに埋め込む(2)去年やってたoptclによるDataGridView埋め込みが、ようやく役に立つときが来た。イベントを追加しようとしたところ、いきなり壁にぶち当たってしまった。新たに定義したイベントにコールバックを登録できない。やろうとしたことは、DataGridView.CellValueChangedイベントが起こったときにTclの関数に列、行とともにセルのテキストを渡してもらおうということだった。CellValueChangedだけど、なにも呼ばれない。ためしにC#側でデリゲートが登録されたかをチェックしてみたが、nullのままだった。第4引数valはC#側では第3引数になるわけだけど、valはstringで、それがいけなかったのだろうか?それとも引数は2つまでしか渡せないとか?optclのドキュメントではTcl側の関数の最初の引数はoptclのオブジェクトで、以降は関数の引数と書いてあるだけで、2個までとは書いてない。分からないが、結局最後の引数をなくし、場所だけ教えてもらって値は自分でとりに行くことにしたらすんなりできた。CellValueChangedコントロールのイベントは基本的に2つしか引数を持たないので、そういうことになってるんだろうか。e);しかし、EventArgsはオブジェクトだから拡張して複数の属性を入れられるけど、Tclに構造を持った引数を渡すことはできるのだろうか?構造体?optclオブジェクト?まだまだ奥が深いな。追記これまた、なぜかは分からないけど、3つ変数でもできるようになった。Tcl側が認識していたアセンブリが古いものだったのかもしれない。それについてはまた書きたいと思います。コメントデータの処理方法の詳細はこちらをご覧ください。