0

私は2つのコンボボックスを持っています。最初のコンボボックスはマネージャーを選択するためのもので、2番目はAsstを選択するためのものです。マネジャー。ただし、ソース名は両方のcomboxで同じです。したがって、たとえば、最初のコンボボックスから「James」を選択した場合、2番目のコンボボックスからは選択しません。2番目のコンボボックスで[James]をクリックすると、エラーが発生するはずであり、[JAmes]を選択してはなりません。

そのコードを2番目のコンボボックスのselection_changedイベントに書き込みました。

if (Manager.SelectedItem == Asst_MAnager.SelectedItem)
{
    MessageBox.Show("You must change Asst_Manager");
} 

そうです、同じアイテムを選択すると、エラーメッセージが表示されます。ただし、エラーメッセージの後に同じアイテムが選択されます。私のWPFコードは以下のとおりです。何かアイデアをいただけますか?

<local:ComboBoxCW Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" x:Name="Manager" Text="" Background="#FFC8D2E8"  Margin="0,0,0,3"
            SelectedID="{Binding Path=[Manager}"  />
<local:ComboBoxCW Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" x:Name="Asst_Manager" Text="" Background="#FFC8D2E8" CWListName="Assistant Manager" Margin="0,0,0,3"
            SelectedID="{Binding Path=[Asst_Manager]}" SelectionChanged="Asst_Manager_SelectionChanged" />
4

4 に答える 4

2

コンボボックスはデータバインドされているため、SelectedIndexを-1に設定することはできません(通常、選択を解除する必要があります)。これは次のようになります。

if (Manager.SelectedItem == Asst_MAnager.SelectedItem)
{
    MessageBox.Show("You must change Asst_Manager");
    Asst_Manager.SelectedIndex = -1;
} 

したがって、各ボックスの最初の項目で「名前を選択」にすることをお勧めします。そうすれば、次のことができます。

if (Manager.SelectedItem == Asst_MAnager.SelectedItem)
{
    MessageBox.Show("You must change Asst_Manager");
    Asst_Manager.SelectedIndex = 0;
} 

または同様のもの。それはきれいではなく、はるかに最善の方法ではありません。しかし、それは簡単で、仕事を成し遂げます。

于 2012-11-05T14:59:00.403 に答える
0

検証ルールを使用してみましたか?ValidationRuleから継承されたクラスを使用して、値を選択する前にそこで値を確認できます。

ここに、このトピックを説明する記事があります。それが役に立てば幸い。

于 2012-11-05T14:57:52.500 に答える
0

LINQを使用してAsst_Managerリストでフィルター処理し、asstmgrリストにmgr名が含まれないようにします。そして、最初のリストからアイテムが選択されるまで、2番目のリストをアクティブにしません。

于 2012-11-05T15:00:22.047 に答える
0

選択が変更されたイベントのように使用できます

  private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        string s = string.Empty;
        string s1 =string.Empty;
        if (comboBox2.SelectedItem != null)
        {
            s1 = comboBox2.SelectedItem.ToString();
        }
        if (comboBox1.SelectedItem != null)
        {
            s = comboBox1.SelectedItem.ToString();
        }
        if (s == s1)
        {
            MessageBox.Show("You have Selected These Item As Second Combobox");
            comboBox1.SelectedItem = null;
        }
    }

    private void comboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        string s=string.Empty;
        string s1 = string.Empty;
        if (comboBox1.SelectedItem != null)
        {
            s = comboBox1.SelectedItem.ToString();
        }
        if (comboBox2.SelectedItem != null)
        {
            s1 = comboBox2.SelectedItem.ToString();
        }
        if (s == s1)
        {
            MessageBox.Show("You have Selected These Item As First Combobox");
            comboBox2.SelectedItem = null;
        }
    }
于 2012-11-05T15:03:58.910 に答える