- PR -

コントロールIDの固定化

1
投稿者投稿内容
PRIちゃん
会議室デビュー日: 2007/10/26
投稿数: 3
投稿日時: 2007-10-26 17:10
はじめて投稿いたします。

外部アプリケーションから、フォーム上のボタンを押下してもらうという用件があるのですが、その外部アプリケーションはコントロールIDに対して処理をおこなう仕様で、.NETはコントロールが生成される度に毎回違うIDが振られてしまう為、思うように動いてくれません。
そこで、SetWindowLong(ボタンのハンドル, GWL_ID, 固定ID)のようにしてコントロールIDを固定化したのですが、今度はボタンに対して何かイベントが発生するたびに、例外が生成されてしまいます。どうやら内部でもっているIDとこちらで勝手に変えてしまったIDが合わないので例外になってしまうのだと思うのですが。

どうしたら安全にコントロールIDを毎回同じ番号にすることができるのでしょうか?
ご教授いただけたら幸いです。
よろしくお願いします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-26 17:17
引用:

PRIちゃんさんの書き込み (2007-10-26 17:10) より:

外部アプリケーションから、フォーム上のボタンを押下してもらうという用件があるのですが、その外部アプリケーションはコントロールIDに対して処理をおこなう仕様で、.NETはコントロールが生成される度に毎回違うIDが振られてしまう為、思うように動いてくれません。
そこで、SetWindowLong(ボタンのハンドル, GWL_ID, 固定ID)のようにしてコントロールIDを固定化したのですが、今度はボタンに対して何かイベントが発生するたびに、例外が生成されてしまいます。どうやら内部でもっているIDとこちらで勝手に変えてしまったIDが合わないので例外になってしまうのだと思うのですが。

どうしたら安全にコントロールIDを毎回同じ番号にすることができるのでしょうか?


だからといって、コントロール ID を同じにするという対策を考えるのではなく、別のアプローチを考えた方が良いのではないでしょうか。 外部アプリケーションのテクノロジが何であるかにもよりますが。(環境面の情報は記載して欲しいです)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
PRIちゃん
会議室デビュー日: 2007/10/26
投稿数: 3
投稿日時: 2007-10-26 17:47
じゃんぬねっと さん さっそくのお返事ありがとうございます。

コントロールIDを指定してボタン押下してくる外部アプリケーションは、私の管轄外ですでに使用が決定しているため、他のアプリケーションを選択することも、そのアプリケーションが別のテクノロジを選択してくれることも不可能な状態です。

別の対策となると、こちらがコントロールIDを静的に決められるテクノロジを選択するしかないという状況です。
PRIちゃん
会議室デビュー日: 2007/10/26
投稿数: 3
投稿日時: 2007-11-11 11:59
自己レスですみません。

Microsoftに問い合わせた結果 .NET Framework 1.1 の既知バグであることが判明し、修正プログラムを当てたら解決しました。
参考資料
http://support.microsoft.com/kb/875434/en-us

お騒がせしました。
1

スキルアップ/キャリアアップ(JOB@IT)