-4

私は WPF と C# を使用してプロジェクトに取り組んでいます。ウィンドウには、同じ数のアイテムを含む約7つのリストボックスがあります。これらの項目は、実際には相互に関連しています。グリッドに似ています。

lisBox1 | lisBox2 | lisBox3 | lisBox4 | lisBox5 | lisBox6 | lisBox7

3 番目の ListBox の SelectedIndex が変更されるたびに、他のすべてのリストボックスの SelectedIndex が 3 番目の listBox の SelectedIndex と等しくなるように設定されます。これにより、ユーザーは実際に読んでいる行を強調表示できます。

私のマシンからのスクリーンショット

Windows XP を実行しているクライアントのマシンにプロジェクトを配置したとき、インデックスが適切に管理されていません! 各 listBox のインデックスは定期的に変更され、すべての listBox から選択した項目のインデックスを取得できません。つまり、各 listBox のインデックスが異なる場合とない場合があります。

また、クライアントのマシンでは、リストボックスで複数の項目を選択できることに気付きました。VS10 と Windows 8 を実行している開発マシンでは、これを無効にして正常に動作しています。

Windows XP に関連するものですか?

これらの問題の原因は何ですか?解決するためのアイデアをいただければ幸いです。前もって感謝します。

マークアップ

<ListBox Height="auto" HorizontalAlignment="Left" Margin="30,201,0,0" Name="listBox1" VerticalAlignment="Top" Width="40" FontStyle="Italic" SelectionChanged="listBox1_SelectionChanged" />
<ListBox Height="auto" HorizontalAlignment="Left" Margin="75,201,0,0" Name="listBox2" VerticalAlignment="Top" Width="85" FontStyle="Italic" SelectionChanged="listBox2_SelectionChanged" />
<ListBox Height="auto" HorizontalAlignment="Left" Margin="163,201,0,0" Name="listBox3" VerticalAlignment="Top" Width="190" FontWeight="Bold" FontStyle="Italic" SelectionChanged="listBox3_SelectionChanged" KeyDown="listBox3_KeyDown" />
<ListBox Height="auto" HorizontalAlignment="Left" Margin="355,201,0,0" Name="listBox4" VerticalAlignment="Top" Width="90" FontStyle="Italic" SelectionChanged="listBox4_SelectionChanged" />
<ListBox Height="auto" HorizontalAlignment="Left" Margin="449,201,0,0" Name="listBox5" VerticalAlignment="Top" Width="55" FontStyle="Italic" SelectionChanged="listBox5_SelectionChanged" />
<ListBox Height="auto" HorizontalContentAlignment="Right" HorizontalAlignment="Left" Margin="505,201,0,0" Name="listBox6" VerticalAlignment="Top" Width="80" FontWeight="Bold" SelectionChanged="listBox6_SelectionChanged" />
<ListBox Height="auto" HorizontalContentAlignment="Right" HorizontalAlignment="Left" Margin="590,201,0,0" Name="listBox7" VerticalAlignment="Top" Width="80" FontWeight="Bold" SelectionChanged="listBox7_SelectionChanged" />
<ListBox Height="auto" HorizontalContentAlignment="Right" HorizontalAlignment="Left" Margin="675,201,0,0" Name="listBox8" VerticalAlignment="Top" Width="95" FontWeight="Bold" SelectionChanged="listBox8_SelectionChanged" />

コード:

private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox2.SelectedIndex = listBox1.SelectedIndex;
}

private void listBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox3.SelectedIndex = listBox2.SelectedIndex;
}

private void listBox3_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox4.SelectedIndex = listBox3.SelectedIndex;
}

private void listBox4_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox5.SelectedIndex = listBox4.SelectedIndex;
}

private void listBox5_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox6.SelectedIndex = listBox5.SelectedIndex;
}

private void listBox6_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox7.SelectedIndex = listBox6.SelectedIndex;
}

private void listBox7_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox8.SelectedIndex = listBox7.SelectedIndex;
}
private void listBox8_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            listBox1.SelectedIndex = listBox8.SelectedIndex;
        }

インデックスのあり方これが私のPCの様子です。パーフェクト!

Windows XP でのインデックスの仕組みXPだとこうなります。

私のマシンではどのように複数選択がOKなのかこれは、私のPCで複数選択がオフになっていて、正常に機能する方法です。

Windows XP での複数選択の誤動作Windows XP では、このように複数選択がオンになり、listbox3 の最初の項目が常に選択されます。

4

1 に答える 1

1

すべてのリストボックスが同じコレクションにバインドされている場合は、IsSynchronizedWithCurrentItem プロパティを使用できます。それらすべてでtrueに設定し、すべてのリストボックスを同じコレクションにバインドすると、それらが整列するはずです。

複数選択に関しては、SelectionModeを指定していません。明示的に Single に設定してみてください。

よろしく、ヨニ。

于 2013-08-19T15:42:58.220 に答える