掲示板お問い合わせランダムジャンプ



この広告は30日以上更新がないブログに表示されております。 新しい記事を書くことで広告を消すことができます。

Top Index

2008年11月12日
MDI子フォーム上でCtl+C、Ctl+X、Ctl+Vなどが効かない場合の原因
VisaulStadio2008 Standard SP1 にて検証。
ちなみにこの現象はMDIで起きやすいですが、SDIでも再現は可能です。

■症状
MDI子フォームでコピー、カット、ペーストのショートカットキーを押しても、
処理が実行されない。

同様の症状を検索してみましたが、それっぽいトラブルは他では発生していないのか、
あまり見当たりません。
VBレスキュー花ちゃんの掲示板に質問を投げかけている人がいるので、私の環境固有の問題でもないようです。


■再現手順 その1
1.WindowsFormアプリケーションを作成。
2.Form1にテキストボックスを1つ追加。
3.プロジェクトを右クリックして、Windowsフォームを選択。MDI親フォームを選択して追加する。
4.ツールストリップメニューにボタンを追加し、クリックイベントに以下のコードを記述する。
Dim ChildForm As New Form1
ChildForm.MdiParent = Me
ChildForm.Show()
5.スタートアップフォームをMDIParent1に変更。
6.デバッグを開始。
7.MDI親フォームが起動したら、[4]で追加したボタンをクリックしMDI子フォームを開く。
8.MDI子フォームにあるテキストボックスにフォーカスを当て、
 Ctl+C、Ctl+X、Ctl+Vなどのショートカットキーを実行する。
 この際、処理が走らない。

■再現手順 その2
1.WindowsFormアプリケーションを作成。
2.Form1にテキストボックスを1つ追加。
3.プロジェクトを右クリックして、Windowsフォームを選択。MDI親フォームを選択して追加する。
4.MDI親フォームのMDIコンテナ上にテキストボックスを追加する。
5.スタートアップフォームをMDIParent1に変更。
6.デバッグを開始。
7.MDI親フォームが起動したら、[4]で追加したテキストボックスにフォーカスを当て、
 Ctl+C、Ctl+X、Ctl+Vなどのショートカットキーを実行する。
 この際、処理が走らない。
※つまり、MDI子フォームのプロパティ設定は関係ないことになる。

■動作しない理由?
MID子フォームのKeyPreviewプロパティをTrueにして、KeyDownイベントをトラップしてみると変な現象を見ることができます。

Ctl+Cキーを押下すると本来であればCtlキーとCキーが押されていることを検知できるのですが、これをMDI子フォームで同イベントをトラップすると
・Ctlキーが押されていることを検知できます。
・Cキーが押されていることを検知できません。
ですが、Ctl+Alt+Cキーを押下すると、
・Ctlキーが押されていることを検知できます。
・Cキーが押されていることを検知できます。
となります、
※検知はできますが、コピー処理は発生しません。

ということはCtl+○キーが検知できないのか?と推測してみますが、Ctl+Eキーなどのように予約されていない組み合わせであれば
・Ctlキーが押されていることを検知できます。
・Eキーが押されていることを検知できます。
検知が可能です。

どうも予約されているキーの組み合わせが発生しないようになっている模様。

■対処、というか突然解決
こうもうまくいかないと仕様っぽいですが、かといってショットカットキーが効かないと不便です。
と思ったのですが・・・、ふと考えてみると、MDI親フォームのデフォルトにはMenuStripがデフォルトで付いています。

そうです、MenuStripもCtlキーをつかったショートカットキー(たとえば保存はCtl+Sキーなど)が利用できるため、競合している可能性があるのです。

MenuStripの「編集(E)」を見てみてください。Ctl+Cキーなどメジャーなショートカットキーが登録されていますね。
つまり、テキストボックスにショートカットキーが飛ぶ前にMenuStripがトラップしていることが原因だったのです。

では、ためしにMenuStripの「編集(E)を削除してから、再度実行してみてください。
正常に動作しました^^;

追記
さっそく上述の掲示板に返信してみようとしたのですが、質問者がクローズしたためかレスがつけられませんでした。残念!
[ 投稿者:mk3008 at 00:24 | フォームTips | コメント(0) | トラックバック(0) ]

2008年09月14日
.NETで編集画面を効率よく作成する方法-カスタマイズ編
(VisualStudio2008 Standard Edition にて検証)

前回はデータソースからUIを自動生成する方法について説明しました。
今回はデータソースから任意のUIを出力する方法について説明したいと思います。

続きを読む ...
 
[ 投稿者:mk3008 at 17:59 | フォームTips | コメント(0) | トラックバック(0) ]

.NETで編集画面を効率よく作成する方法
(VisualStudio2008 Standard Editionにて検証)

編集画面といえば、一般的に以下の作業が必要とされます。

ⅰ.各項目ごとの見出し用コントロールと、編集用コントロールの配置
 (具体的にいうとラベルと、テキストボックスやチェックボックスなど)
ⅱ.「ⅰ」で作成したコントロールと、編集用のクラスとのバインド
ⅲ.編集用クラスのIO処理。
ⅳ.その他(コントロールのアクセス制限など)

このうち、「ⅰ」、「ⅱ」については、「データソース」、「データソース構成ウィザード」を用いることで、その作業のほとんどを自動化できます。
※データソースは、データベースを使わないアプリケーションでも利用できます。

では、データソースの作り方から順にやっていきましょう。

続きを読む ...
 
[ 投稿者:mk3008 at 17:20 | フォームTips | コメント(0) | トラックバック(1) ]

2006年07月03日
透明フォームの「透明」とは?
(VB2005向け)
VB.NETのフォームのプロパティ「TransparcensyKey」を使うと、
好きな色を透明化することができます。

Form1.TransparencyKey = System.Drawing.SystemColors.Control
なんて書いてしまったら、フォームの背景(Controlカラー部分)が
透明になっちゃうんですね。

しかし、透明になるのはいいんですが、それは
 a.背景が透明になっているだけ
 b.背景が透明になっているというより、その部分が存在していない。
どっちなんでしょうか?
(って、何いってるのか訳分かんないね)

ぐだぐだいうより、画像を用いて説明。


続きを読む ...
 
[ 投稿者:mk3008 at 00:04 | フォームTips | コメント(0) | トラックバック(0) ]

2005年04月06日
フォーム間で値をやり取りする モードレスフォーム編
前回は、モーダルフォームでの変数のやり取りを試してみました。
これは主に検索フォームなどで利用できると思います。

んで、今回はモードレスフォームの場合を考えてみました。
こちらは主に、変更内容が即座に反映されるので、処理の進捗表示、ツール用のウインドウなどに利用できると思います。

以下、ソースコード。

続きを読む ...
 
[ 投稿者:mk3008 at 23:42 | フォームTips | コメント(3) | トラックバック(0) ]

2005年04月05日
フロート、ドッキングの出来るツールバー(フォーム)
よく、フロートできるツールバーを見かけますので、できるかどうか試してみた。

続きを読む ...
 
[ 投稿者:mk3008 at 00:05 | フォームTips | コメント(0) | トラックバック(0) ]

2005年03月31日
フォーム間での値のやり取り モーダルフォーム編
検索フォームを作る場合など、フォーム間で変数、クラスをやり取りする必要があります。
こちらのサンプルを作ってみました。

続きを読む ...
 
[ 投稿者:mk3008 at 01:55 | フォームTips | コメント(0) | トラックバック(1) ]

2005年03月26日
タスクバーに常駐する
NotifyIconコントロールを使えば、簡単に常駐フォームが作成できます。

MSDNにも作成例が載っていますが、イマイチ実用性にかけるので、もう少し、それっぽいものを作ってみました。

続きを読む ...
 
[ 投稿者:mk3008 at 00:24 | フォームTips | コメント(0) | トラックバック(0) ]

2005年03月24日
グラフィカルなコンフィグフォーム その2
前回、「「1つフォームで1つのカテゴリーを管理」するようにし、「それらを表示するメニューフォームを作る」ということができないか?」ということで、フォーム間でコントロールをやり取りするという方法にて、タブコントロールのような外見を作ることができました。

が、これだけでは、見た目だけ出来ている状態であり、中身がありません。
今回は、設定の呼び出しや保存など、込み入った内容を作っていきたいと思います。

続きを読む ...
 
[ 投稿者:mk3008 at 01:21 | フォームTips | コメント(0) | トラックバック(0) ]

2005年03月17日
グラフィカルなコンフィグフォーム
コンフィグを設定するフォームを考えてみると、ラジオボタンやチェックボックスを使ったフォームが考えられます。
設定する内容が多い場合は、カテゴリーに分類し、タブコントロールを使って、限られた画面サイズを有効に使います。

タブは限られた画面を有効に使えるという点では良いのですが、1つのフォームに通常ではありえないような数のコントロールを配置することを可能としてしまい、フォームクラスのソースの視認性を下げかねないです。

(仮に、1つのタブ内に10個のチェックボックスがあるとして、それが10タブあったとすると、1つのフォームに100個のコントロールが存在することとなり、それらを1クラスで制御しなくてはいけなくなってしまう)

そこで、タブの中身を1つのクラスとして考えることはできないかと考えてみました。
これであれば、上記の例であったとしても、10クラスを扱うだけで済むはずです。

それに合わせ、タブコントロールを使わず、ピクチャーボックスを使い、FireFoxみたいな格好いいコンフィグにしてみようと思いました。

>FireFoxのコンフィグ
config_firefox.gif
>vb2html ver2.0のコンフィグ
config_vb2html.gif

以下、作成方法です。

続きを読む ...
 
[ 投稿者:mk3008 at 01:00 | フォームTips | コメント(0) | トラックバック(1) ]