MaskedTextBox コントロールでキーボード入力を処理する場合の注意点について

こんにちは、Visual Studio サポート チームです。 今回は、MaskedTextBox コントロール (以下、MaskedTextBox) でキーボード入力を処理する場合の注意点についてご紹介します。 MaskedTextBox は、マスク パターンを指定して、入力制限を行うことができる TextBox です。 郵便番号、日時、電話番号などの標準的なマスクは、あらかじめ用意されており、マスクを設定しておくと、その形式に合わない入力を拒否できます。 入力が不可欠な文字スペース、英数字だけ受け付ける、など様々な条件を組み合わせて、マスクをきめ細かく作成することもできます。 また、パスワードなどの入力を受け付ける場合、画面に入力された文字を表示せず、代替文字を表示するような設定もできる非常に便利なコントロールです。 この MaskedTextBox の内部では、Enter キーの入力に対して他のキーとは異なる特別な処理が実装されていますので、ご注意いただく必要があります。 MaskedTextBox コントロールでの特別な処理について まず、キーが押された時に発生するキー イベントの順番は、次のようになります。    KeyDown → KeyPress → KeyUp MaskedTextBox では、 KeyDown イベントにおいて、Enter キーが検知されると、コントロール内部で特殊なフラグが設定されます。 このフラグは、KeyPress イベント内で再設定されます。 このように、MaskedTextBox が Enter キーを他のキーとは異なる特別なキーとして処理しています。 しかし、他のコントロールによるイベント処理の影響で、KeyPress イベントがキャンセルされると、上記フラグが設定されたままとなるため、次の文字入力以降で不整合が発生します。 Windows フォームでは、キーボード メッセージがコントロールに到達する前に、それらをフォーム レベルで処理できますが、この Enter キーに対する特別な処理のために、問題が発生することがあります。 注意が必要なケースについて、具体例と合わせてご説明します。 注意が必要な例 Form 上に、MaskedTextBox を配置し、Enter キーが押された際に、次のコントロールにフォーカスを移動する処理を実装します。…


アプリケーションで、文字化けを回避するためのアプローチ

こんにちは、Visual Studio サポートチームです。 今回は、ミッシング グリフについてご案内いたします。 文字を表示したり、印刷する際に時折、文字化けに悩まされることがあります。 では、どうして文字化けが発生するのでしょうか? その要因の一つとして、このミッシング グリフが挙げられます。 グリフとは 文字コードに対応する文字の形状であり、フォント ファイルに含まれるデータとなります。 アプリケーションで、文字を表示する際には、フォントと文字コードを指定すると、Win32 API や .NET Framework の内部処理では、フォントファイルを参照し、文字コードに対応するグリフを検索をします。 この検索で、グリフが見つからない場合、文字化けが発生します。 つまり、アプリケーションが指定したフォントと文字コードのミスマッチが、文字化けの原因となります。 この状態をミッシング グリフと称します。 ミッシング グリフが発生した場合には、フォント ファイルのグリフの 0 番目に代替用のグリフを用意していますが、このグリフは、”□” であったり “・” であったり、どのようなグリフが用意されているかは決まっていません。 また、Win32 API や .NET Framework の内部処理では、ミッシング グリフが発生した場合、別のフォントを代用して、ターゲットの文字コードに対するグリフの検索を行っています。 この代用処理は、代表的なフォントに対してのみ検索しており、インストールされている全てのフォントは検索していないため、残念ながらこの代用処理でもミッシンググリフを確実に回避することはできません。 また、複数のフォントを検索するため、フォント ファイルが用意している代替用のグリフを利用せず、Win32 API や .NET Framework の Runtime が個別に用意している代替用のグリフが利用されます。 これらの代替用のグリフは Win32 API や .NET Framework ごとに共通ではなく、各関数やメソッドごとに異なるグリフが利用されます。 このため、アプリケーションがフォントと文字コードのミスマッチを起こすような処理を行うと、以下の何れかの現象が発生します。…


Win8 、Windows Server 2012 への VS2012 インストール時の問題

※ お読みください (2015 年 7 月 15 日 : 追記) ————————— 本記事で紹介しているルート証明書の更新プログラムは既に公開が終了しており、現在入手することはできません。また、その代替となるルート証明書の更新プログラムも個別に入手してご利用いただくことはできません。 Visual Studio のインストールでは、Visual Studio や同時にインストールされる関連コンポーネントのデジタル署名に使用されている証明書の有効性を、インターネット上の認証局を介して確認しています。 そのため、インターネットに接続されていない環境で Visual Studio のインストールを実行した場合、一部のコンポーネントはデジタル署名の有効性を確認できず、インストールに失敗することがあります。 このため、製品をインストール後、オフライン環境でご利用いただく場合でも、製品のインストール時には、常に最新の情報を使用して検証を行えるよう、インターネットに接続して最新の Windows Update を適用した状態でインストールを行ってください。インストール完了後に、オフライン状態に戻してご利用ください。 ご不便をおかけいたしますが大変恐れ入りますが、ご理解くださいますようお願いいたします。 —————————     こんにちは。Visual Studio サポート チームです。 この記事では、Windows 8 および Windows Server 2012  への Visual Studio 2012 のインストールにあたって、事前に確認いただきたい内容をお知らせします。   ====== 現象 ====== Windows 8 および Windows Server 2012  をオフラインでインストールした状態で…


「テンプレートのエクスポートウィザード」ダイアログの一部が Windows 7 OS上で正しく表示がされない問題について

  こんにちは、Visual Studio サポート チームです。 今回は、Visual Studio 2012、2013で、Web サイトプロジェクトのテンプレートのエクスポートを行った際に表示される 「テンプレートのエクスポートウィザード」 ダイアログの一部が正しく表示されない問題、また、その対処策についてご案内します。 Windows 7 OS上でVisual Studio 2012または、2013でWebサイト プロジェクトを作成し、プロジェクトのテンプレートをエクスポートした際に、下記のようにエクスポートウィザード上の「このテンプレートを表示する [新しいプロジェクト] ダイアログボックスの言語のカテゴリを指定してください」 コンボボックスの表示が正しく行われない問題があります。         この問題が発生する環境 Visual Studio 2012, 2013 OS: Windows 7       対処策 この問題の対処策は以下のいずれかとなります。 方法 1. キーボード入力にて選択を行う : =============================== 1.Visual Studioの メニューより、以下を選択します。 「ファイル」 -> 「テンプレートのエクスポート」 2. TAB キーを押して、「このテンプレートを表示する [新しいプロジェクト] ダイアログボックスの言語のカテゴリを指定してください」 のコンボボックスにカーソルを合わせます。 ※…


2013年10月 7日以降 に発生する可能性のあるVisual Studio 2012 のインストール時の問題

  こんにちは、Visual Studio サポート チームです。 今回の記事は、2013年10月 7日以降 に発生する可能性のある、Visual Studio 2012 のインストール時の警告についてご案内いたします。 この問題は、以前の Visual Studio 2012 のインストーラーに問題があるため発生するエラーとなります。 以前の Visual Studio 2012のインストール パッケージで2013年10月 7日以降に製品をインストール実行した場合、「パッケージソースが見つかりません」というエラーが発生する場合があります。 または、インストールが完了した後に、次の警告が表示される場合があります。   —————————- Microsoft Web Deploy 3.0 現在のシステム時計または署名ファイルのタイムスタンプで確認すると、必要な証明書の有効期間が過ぎています。 —————————-   この現象は、以前に MSDN サブスクライバー ダウンロードでインストール イメージを入手した場合か、パッケージ版で製品を購入した場合で、これらのインストール イメージで 2013年 10月 7日以降に、新規で製品をインストールする場合や、インストール後にVisual Studio 2012 Updateを適用していない場合に発生する可能性があります。   この問題の回避策は以下のいずれかとなります。   – MSDN サブスクライバー ダウンロードから現在の最新のイメージをダウンロードし、インストールします – 既存のパッケージでインストール自体が完了する場合には、以下から Visual Studio…


Visual Studio 2012 で「プログラム互換性アシスタント」ダイアログが表示される

  こんにちは。Visual Studio サポート チームです。 Windows Update を適用しているにもかかわらず、Visual Studio 2012 起動時に、以下のような「プログラム互換性アシスタント」ダイアログが表示されることがあります。         原因について 本現象は、Windows Update から配信される .NET Framework 4.5 ランタイムの更新に対応する Visual Studio の更新が適用されていない状態で、Visual Studio を起動した際に発生する問題です。 Windows Update を適用すると .NET Framework 4.5 ランタイムなど、Windows Update での更新の配信対象となるモジュールは、最新の状態になります。 しかし、Visual Studio 製品に関しては、対応する更新プログラムの配信方法が Windows Update ではなく、Visual Studio 製品として別途配信されます。 そのため、Windows Update で .NET Framework ランタイムに更新が適用された環境で Visual Studio 2012 を起動する際に、.NET…


SQL Server Management Studio 2012 と Visual Studio 2012 をインストールした環境で、Visual Studio 2010 のソリューションファイルを開こうとするとエラーメッセージが表示される

    SQL Server Management Studio 2012 と Visual Studio 2012 をインストールした環境で、Visual Studio 2010 のソリューションファイルをWindows エクスプローラーから、ダブルクリックして開こうとすると、以下のエラーメッセージが表示されます。 なお、Visual Studio 2012 のメニューから [ファイル] – [開く] – [プロジェクト/ソリューション] を選択して開く際にはエラーは表示されません。     [回避方法] 回避策1. Visual Studio 2010 をインストールします。   回避策 2. Visual Studio ソリューション ファイルの拡張子の関連付けの既定のプログラムを Visual Studio 2012 へ変更することにて、Visual Studio 2012でソリューションファイルを開くことができます。   – 手順 1) Visual Studio 2010 のソリューション…


特定のソリューションをデバッグ実行すると、VS 2010 が異常終了する場合の対処方法

こんにちは。Visual Studio サポート チームの根岸です。   今回は、Visual Studio で、特定のソリューションをデバッグ実行した際に、Visual Studio IDE が異常終了するなどの事象が起こった場合、一般的な対処方法として簡単に実施できる手順を 2 通りご案内します。   ※下記内容は Visual Studio 2010 について記載していますが、Visual Studio 2005、2008 の場合においても同様です。   .suo ファイル (ソリューション ユーザー オプション ファイル) を再生成させる  Visual Studio 2010 開発環境は、ソリューション固有の情報を保持するために .suo ファイルと呼ばれる情報を自動的に作成して使用します。 .suo ファイルは、Visual Studio 2010 環境でソリューションを開いて、エディタでの編集やデバッグ時のブレークポイントの設定等、何らかの操作を行われるとその都度その内容に応じて更新されます。 何らかの原因でファイル内の情報が部分的に破損し、本ファイルの内部情報に不整合が生じた場合、Visual Studio 2010 がファイル内に格納された情報を正確に参照できなくなり、デバッグ処理など開発環境としての動作が正常に行われなくなる可能性があります。 特定のソリューションのみで問題が発生する場合は、このような .suo ファイル内の情報の不整合が原因で問題が発生している可能性があります。 このため、以下手順を実施し、次回のソリューション読み込み時に、自動的に初期化状態の正常な .suo ファイルが再生成されるようにすると、事象が回避される場合があります。     – 手順…


Visual Studio 2010 インストールにまつわる FAQ

皆さんこんにちは! Visual Studio サポートチームの ネギシ です 私たち、Visual Studio サポート チームでは、(チーム名があらわす通り…ですが) Visual Studio 製品自体のインストールについてのサポートも提供しています。 Visual Studio には多数のコンポーネントが含まれており、特定の環境で特定のコンポーネントにてエラーが発生する場合がありますが、インストール時のエラーには、環境の状況等に応じて様々な要因が考えられます。そのため、サポートの際には、多くの環境情報を採取いただく必要があり、お客様にも操作のお手間を取っていただくことが多々あります。 しかし、インストール時にいくつかの準備を行っていただくことで、一般的なエラーのいくつかは回避できる場合もあります。この記事では、Visual Studio インストールに関連する技術情報、インストール時の基本的な準備の手順をご紹介します。 Visual Studio 2010 のインストール手順について 同じインストール メディアを使用しても、特定の環境でのみインストールに失敗する場合は、まず以下の情報をご確認ください。 Visual Studio 2010 をインストールする方法 http://support.microsoft.com/kb/2445557/ja 上記にはインストールの準備として、インストール時に発生する問題を事前に防ぐための一般的な方法についても記載があります。 管理者アカウントでログインしてインストールを実施する インストールに不要な常駐アプリケーションを停止する Temp フォルダの内容を削除する インストール時にウイルス対策ソフトや、ファイル監視系のアプリが動作している場合に、これが影響してエラーとなる場合があります。この場合、上記のドキュメントでも紹介している 2 の手順にて常駐アプリを停止することで、こうした要因を防ぐことができます。具体的な手順については、以下に図入りの説明があります。(Windows Vista 以外でも方法は同じです。) Windows Vista で常駐アプリケーションを停止する方法 http://support.microsoft.com/kb/961232/ja さらに、DVD メディアからのデータの読み取り時に発生する問題を軽減する方法として、以下を実施することで、一部のエラーは回避できる可能性があります。 ローカルに任意のフォルダーを作成し、DVD メディアに含まれるファイル全てを、作成したフォルダー内にコピーします。 コピーしたフォルダを開き、Setup.exe (Setup と表示される場合は、ファイルの種類が “アプリケーション” の方) をダブルクリックします。 セットアップが開始されますので、指示に従いインストールを行います。 上記を行っても残念ながらインストールに失敗する場合は、サポートまでお問い合わせください。…


[MSI Trouble Shoot] 64 ビットのマネージ カスタム動作から System.BadImageFormatException 例外がスローされる

こんにちは、Visual Studio サポートチームのオオカワです。今日は、Visual Studio のセットアップ プロジェクトで 64bit のカスタム動作を追加した際に、BadImageFormatException がスローされてインストールが正常に完了しないという案件について、対処方法をご案内いたします。 事象 セットアップ プロジェクトに 64 ビットのマネージ カスタム動作を追加した。インストール作業の途中で、64 ビットのマネージ カスタム動作を実行するときに、BadImageFormatException 例外が発生する。 原因 Visual Studio のセットアッププロジェクトは、マネージ カスタム動作 DLL が 32bit 版でも 64bit 版でも、32bit 版の InstallUtilLib.dll をインストーラーに組み込みます。このため、カスタム動作の実行時に64bit 版のカスタム動作を実行しようとしているにもかかわらず 32bit 版の .NET Framework が読み込まれ、結果として例外が発生します。 対処策 InstallUtilLib.dll を手動で 64bit 版に差し替える必要があります。 事前準備 Windows SDK に付属している Orca エディタをインストールします。当該ツールのインストーラーは、たとえば Visual Studio 2010 がインストールされた環境であれば、”Program Files” ディレクトリ配下の…