ブログアーカイブ

TextBox のイベント


Windows 8.1 x64 update 3 RC, Windows Store Apps (C++/CX) で TextBox を複数追加して KeyDown イベントを追加します。

Xaml に KeyDown 属性を使用して KeyDown イベントを追加します。
private TextBox TextBox1;
private TextBox TextBox2;

MainPage::MainPage()
{
InitializeComponent();
}

void MainPage::KeyDown_1(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{
if (e->Key == Windows::System::VirtualKey::Enter)
{
// …
TextBox2->Focus(Windows::UI::Xaml::FocusState::Programmatic);
TextBox2->SelectAll();
}
}
void MainPage::KeyDown_2(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{
if (e->Key == Windows::System::VirtualKey::Enter)
{
// …
}
}

このコードを実行して TextBox1 で Enter キーを押すと、KeyDown_1 イベントに続いて KeyDown_2 イベントも発生します。TextBox.SelectAll() メソッドを実行するとこの現象が発生します。

TextBox1->KeyDown += ref new Windows::UI::Xaml::Input::KeyEventHandler(this, &MainPage::TextBox1_KeyDown); のようにプログラムの中で KeyDown イベントを追加した場合はこの問題は発生しません。

広告

Search.Mapi2Handler.1 エラー


イベントビュアーを起動して、Windows ログのアプリケーションに
イベント 3083, Search
プロトコル ハンドラ Search.Mapi2Handler.1 を読み込めませんでした。エラーの説明: クラスが登録されていません

レジストリが不足している場合に発生します。次のレジストリを付け加えることで問題が解決します。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{9E175BAF-F52A-11D8-B9A5-505054503030}]
@=”Windows Search Service Office Outlook Protocol Handler”
[HKEY_CLASSES_ROOT\CLSID\{9E175BAF-F52A-11D8-B9A5-505054503030}\InprocServer32]
@=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,73,00,\
73,00,70,00,68,00,2e,00,64,00,6c,00,6c,00,00,00
“ThreadingModel”=”Both”
[HKEY_CLASSES_ROOT\CLSID\{9E175BAF-F52A-11D8-B9A5-505054503030}\ProgID]
@=”Search.MAPI2Handler.1″
[HKEY_CLASSES_ROOT\CLSID\{9E175BAF-F52A-11D8-B9A5-505054503030}\VersionIndependentProgID]
@=”Search.MAPI2Handler”

この内容をregファイルに保存してインポート(統合)します。

Search.Mapi2Handler.1 で検索してください。