0

私が直面している問題は非常に厄介です。

私は2つのtabItems(Home、Show)を持つtabControlを持っています

ホームには、MouseLeftButtonDown イベントを処理する画像があります。このイベントは、Show TabItem の可視性を変更し、Selected にする必要があります。

コードには、tabControl.SelectedIndex = 1; があります。tabControl SelectionChangeEvent を強制します (これを使用して、Show および Home TabItems の前景を変更します)。

私が直面している問題は、フォーカスが Show に渡されるのではなく、Home に残っていることです。コードで実行される最後の関数である SelectionChange イベント ハンドラーの最後のステップで、UI に表示される内容が正しいため、コードに問題はありません。

その後、何が実行されますか?誰でも助けることができますか?


private void Main_clientImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)  
{  
         showMenu.Visibility = Visibility.Visible;  
         setTabSelected("showMenu");  
}   



public void setTabSelected(String name)  
{  
   for (int i = 0; i  tabControl.Items.Count ; i++)  
   {  
         TabItem item = tabControl.Items.GetItemAt(i) as TabItem;  
         if (item.Name.Equals(name))  
         {  
             selectedTab=i;  
             tabControl.SelectedIndex = i;  
             item.Foreground = new SolidColorBrush(Colors.Black);  
         }  
         else  
         {  
             item.Foreground = new SolidColorBrush(Colors.White);  
         }  
     }  
}  

private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
      for (int i = 0; i  tabControl.Items.Count; i++)
      {
          TabItem item = tabControl.Items.GetItemAt(i) as TabItem;
           if (tabControl.SelectedIndex == i)
           {
               item.Foreground = new SolidColorBrush(Colors.Black);
           }
           else
           {
               item.Foreground = new SolidColorBrush(Colors.White);
           }
       }
}

//編集: MouseLeftButtonDown イベントに単純な e.Handler = true を追加して解決しました。これの何が問題なのですか?

4

3 に答える 3

3

メソッドのSelectedItemofを変更し、 aと a から実行しました。TabControl
void open_Click(object sender, RoutedEventArgs e)
<Button Click="open_Click"<DataGrid MouseDoubleClick="open_Click"

追加するだけで

e.Handled = true;

メソッドの最後に、open_ClickFotisMouseDoubleClickが質問で述べたように機能しました。

于 2013-12-06T13:11:02.930 に答える
0

コードに問題があります。

private void Main_clientImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)  
{  
    showMenu.Visibility = Visibility.Visible;  
    homeMenu.Visibility = Visibility.Hidden;
    setTabSelected("showMenu");  
}   

public void setTabSelected(String name)  
{  
    for (int i = 0; i < tabControl.Items.Count; i++)  
    {  
        TabItem item = tabControl.Items.GetItemAt(i) as TabItem;  
        if (item.Header.Equals(name))  
        {  
            selectedTab = i;  
            item.IsSelected = true; 
            item.Foreground = new SolidColorBrush(Colors.Black);  
        }
        else  
        {  
            item.Foreground = new SolidColorBrush(Colors.White);  
        }  
    }  
}  

private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    for (int i = 0; i < tabControl.Items.Count; i++)
    {
        TabItem item = tabControl.Items.GetItemAt(i) as TabItem;
        if (tabControl.SelectedIndex == i)
        {
            item.Foreground = new SolidColorBrush(Colors.Black);
        }
        else
        {
            item.Foreground = new SolidColorBrush(Colors.White);
        }
    }
}

上記のコードでは、チェックitem.Header.Equals(name)して設定してitem.IsSelected = trueいます。selectionindex が正しく機能しないことがあります。上記のコードは問題に対処する必要があります。

于 2012-06-03T15:00:57.233 に答える
0

TabControl の SelectedItem プロパティが変更された後、SelectedItem.IsFocused = true であることを確認する必要があります。SelectedItem プロパティを変更した直後に SelectedItem.Focus() を使用しない場合。私の場合は助かりました。

于 2017-08-22T09:08:01.033 に答える