364
新人さん
オフライン
投稿: 2
I'm a llama!
|
|
Windows Formがモードレス時のフォーカス
« 投稿日: 2012/12/12 - 21:19:07 » |
|
はじめまして。
SW2011と2012向けにアドイン形式でカスタムツールを作成しています。 Windowsフォーム(ウインドウ)を開いてその上で各種設定を行うテキストボックスや コマンドボタンを配置しているのですが、 tabキーにてフォーカスを移動させると、自作のWindowsフォーム内のボタンのところで SolidwWorksの本体にフォーカスが移ってしまうようで、上下左右キーを押すと3Dモデルが動いてしまいます。 SW2011と2012のいずれの環境でも発生します。
モーダルフォームで開くようにすると問題なくtabキーでの操作やボタンのコマンド実行ができるのですが、 モードレスで実現したいと思っています。
アドインはSW SDKのテンプレートをベースにウインドウを開くようにした感じです。
VBAマクロで作成すれば可能のようですが、なんとか.NETでできればと思っています。
どなたかご存知でしたらご教示よろしくお願いします。
環境:SolidwWorks2011,2012 VB.NET VS2005
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:Windows Formがモードレス時のフォーカス
« 返信 #1 投稿日: 2012/12/13 - 08:52:06 » |
|
364さん、はじめまして!
問題の現象がなぜ起こっているのか、どういた原因か、といった事はわからないのですが、 確認と言うか、試してみては?と思う事があります。
まず、フォームのプロパティで「TopMost」をTrueにしてみてください。 これで、そのフォームは必ずウィンドウ最前面に表示されるようになります。
別件として、フォームのプロパティで「KeyPreview」をTrueにしてみてください。 フォームに乗っかっているコントロールにフォーカスがあっても、フォーム自身のキーイベントとして受け取れる。
「Tabキー」「フォーカス」と言ったキーワードで想定できそうな事を書きましたが、 全然的外れな回答かもしれません...。 サンプルプログラムを添付してもらうともうちょっと原因を調査できるかもしれません。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:Windows Formがモードレス時のフォーカス
« 返信 #2 投稿日: 2012/12/13 - 09:38:07 » |
|
364さん、はじめまして
多分、フォームの表示方法による問題だと思います。
APIヘルプで、Getting Started→Programming with the SolidWorks APIにある"Keystrokes and Accelerator Keys"を見て頂くと分かるのですが、Form.Show()メソッドで表示した場合はTabとEnterキーのイベントを受け取れないみたいです。 Application.Run(Form)メソッドでフォームを表示すると、正常にイベントを受け取れるようです。
ちなみに、Application.RunはSystem.Windows.Formsをインポートする必要があります。
以上、ご参考まで
|
|
|
|
364
新人さん
オフライン
投稿: 2
I'm a llama!
|
|
Re:Windows Formがモードレス時のフォーカス
« 返信 #3 投稿日: 2012/12/14 - 20:03:56 » |
|
Makoron様・hisa様
364です。早速のご回答ありがとうごいざいます。 APIヘルプに問題と対応策載っていましたか。。。 hisa様の仰せの内容で確認したところ、確かにApplication.Runで回避できると記載があり、 組み込んでみたところ、問題なく、Tab・Enterキーでの操作ができるようになりました。
また、今回、Enterキーでのフォーカス操作も必要だったため、Makoron様のKeyPreviewも有効にして 動作を確認することもできました。
とても助かりました。ありがとうございました!今後もよろしくお願いします。
|
|
|
|