0

c# .net for wpf application.once を使用して、コンボ ボックスの項目を切り替える方法。コンボ ボックスにフォーカスすると、項目を切り替えたいコンボ ボックスにフォーカスする代わりに、項目を切り替えることができます。

4

1 に答える 1

0

だから多分これはあなたが望むものです、また私はあなたが何を望んでいるのか本当にわかりません. これはあなたを助けることができます。コンボボックスにフォーカスがある場合は、キーアップまたはキーダウンを押して両方の項目を切り替えることができます。

 public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        comboBox1.Items.Add("1");
        comboBox1.Items.Add("2");
        comboBox1.SelectedIndex = 0;
        comboBox1.Focus();
    }

    private void comboBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Up)
        {
            if (comboBox1.SelectedIndex != 0)
                comboBox1.SelectedIndex--;
        }
        if (e.Key == Key.Down)
        {
            if (comboBox1.SelectedIndex != comboBox1.Items.Count-1)
                comboBox1.SelectedIndex++;
        }

    }
}

よし、じゃあこうしよう。テキストボックスのテキストが変更されると、最初のイベントが呼び出されます。私があなたを正しく理解していれば、あなたはそのようなものを持っているはずです。2番目のものはあなたが必要とするものです。

   private void textBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        //deleting all items
        comboBox1.Items.Clear();
        //adding text of each textbox if not empty
        if (textBox1.Text != "")
            comboBox1.Items.Add(textBox1.Text);
        if (textBox2.Text != "")
            comboBox1.Items.Add(textBox2.Text);
        //if combobox not empty select first item
        if (comboBox1.Items.Count != 0)
            comboBox1.SelectedIndex = 0;
    }

だから私がしたことはです。テキストボックスの1つが選択され、ユーザーが上下に押すと、コンボボックスのコンテンツが切り替わります。このイベントは、PreviewKeyDown イベントとして各テキスト ボックスに割り当てる必要があります。

        private void textBox_KeyDown(object sender, KeyEventArgs e)
    {
        //key up or key down
        if (e.Key == Key.Up || e.Key == Key.Down)
        {
            //has 2 items
            if (comboBox1.Items.Count == 2)
            {
                if (comboBox1.SelectedIndex == 0)
                    comboBox1.SelectedIndex = 1;
                else
                    comboBox1.SelectedIndex = 0;
            }
        }
    }

これは、イベントがバインドされたテキスト ボックスの xaml コードです。

    <TextBox Height="23" Margin="12,0,0,76" Name="textBox1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="120" TextChanged="textBox_TextChanged" PreviewKeyDown="textBox_KeyDown" />
    <TextBox Height="23" HorizontalAlignment="Right" Margin="0,0,12,76" Name="textBox2" VerticalAlignment="Bottom" Width="120" TextChanged="textBox_TextChanged" PreviewKeyDown="textBox_KeyDown" />

言い忘れたことがあります。テキストボックスの 1 つがフォーカスされている場合にのみ機能します。フォーカスできるアイテムがさらにある場合は、すべてのアイテムにこのイベントを追加して、現在フォーカスされているアイテムに関係なく呼び出されるようにする必要があります。もう 1 つの可能性は、キーボード フッカーを作成することです。しかし、これは複雑です。

于 2012-08-29T11:38:27.843 に答える