locked
TabControl内のTextBoxで、IMEが効かなくなる RRS feed

  • 質問

  • 損と申します。
    Silverlight4+VisualStudio2010で開発しております。
    以下の問題が発生しており困っています。

    ・TabControlに置いたTextBoxが、TebItemにフォーカス後、IMEが効かなくなる。

    具体的な操作としては、
    1.Silverlight4アプリケーションを新規作成
    2.以下のコードのように、TabControlにTextBoxを配置
    3.起動して、日本語入力ができることを確認
    4.Shift+Tabで、TabItemにフォーカス
    5.TabでTextBoxにフォーカス
    6.IMEが効かなくなる

    「IMEが効かなくなる」とは、半角/全角キーを押しても日本語入力モードにならず、英数入力しかできないという意味です。
    また、TabControlの外にあるコントロールや、ブラウザ外に一度出てから、再度TextBoxに戻ってくるとIMEが効くようになる場合があります。

    常にIMEを有効にしておきたいのですが、対応方法が分かる方はいらっしゃいますでしょうか?
    ちなみに、同様のアプリをSL5で作成したところ、この現象は発生しませんでした。


    ■MainPage.xaml

    <UserControl x:Class="IMETest.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

        <Grid x:Name="LayoutRoot" Background="White">
            <sdk:TabControl>
                <sdk:TabItem>
                    <TextBox/>
                </sdk:TabItem>
            </sdk:TabControl>
        </Grid>
    </UserControl>


    ■MainPage.xaml.cs

    using System.Windows.Controls;

    namespace IMETest
    {
     public partial class MainPage : UserControl
     {
      public MainPage()
      {
       InitializeComponent();
      }
     }
    }


     

    2012年3月14日 2:55

回答

  • クライアントのSilverlightのバージョンが、5.0.61118.0だと発生しますが、4.0.60831.0だと発生しない現象のようです。
    SL4アプリとSL5ランタイムという組み合わせは、SL4のDLLが使われるのかな?と思っていたのですが、違いがあるということなのでしょうか。分かりませんでした。

    対症療法ではありますが、見えないButtonコントロールを配置し、TabItemにフォーカスが当たったら、1度Buttonコントロールにフォーカスを当てて、TabItemにフォーカスを戻すという実装にすることで、目的の動作(IMEが制御できるようになる)は実現できました。
    将来的にSL5にすれば解決する問題ということで、解決済みにしたいと思います。
    • 回答としてマーク 2012年3月19日 7:35
    2012年3月19日 7:35