2011-10-23 10 views
0

私はチェックリストボックスとリストボックスを同じ高さと同じ数のアイテムで持っています。リストボックスを使用して、チェックリストボックスの項目のステータスを保持します。2つのリストボックスのスクロールを同期するにはどうすればよいですか?

スクロールバーがある場合、チェックリストボックスをスクロールすると、同じインデックスのリストボックスもスクロールする必要があります。私は、彼らが別の金額でスクロールすることを除いて、仕事をしています。

private void checkedListBox1_MouseWheel(object sender, MouseEventArgs e) 
{ 
    int scroll = e.Delta/120; 

    if (scroll == 1) 
    { 
     checkedListBox1.TopIndex -= 5; 
     listBox1.TopIndex = checkedListBox1.TopIndex; 
    } 
    else if (scroll == -1) 
    { 
     checkedListBox1.TopIndex += 5; 
     listBox1.TopIndex = checkedListBox1.TopIndex; 
    } 
} 

また、私が選択したのと同じインデックスを取得するには、このコードを使用していますが、リストボックスのインデックスがにCheckedListBoxから選択した後に選択されるまで若干のタイムラグがあります。とにかくそれを同時に選択するには?

private void checkedListBox1_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (checkedListBox1.Items.Count > 0) 
    { 
     int selected = checkedListBox1.SelectedIndex; 
     if (checkedListBox1.GetItemChecked(selected) == false) 
     { 
      checkedListBox1.SetItemChecked(selected, true); 
      listBox1.SetSelected(selected, true); 
     } 
     else if (checkedListBox1.GetItemChecked(selected) == true) 
     { 
      checkedListBox1.SetItemChecked(selected, false); 
      listBox1.SetSelected(selected, true); 

     } 
    } 
} 

答えて

2

次の2つのScrollViewerの内部のリストボックスを入れて、viewChangedイベントでxaml.cs上のコードを書くことができる部分

private void ScrollViewer1_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
{   
ScrollViewer2.ScrollToHorizontalOffset(double.Parse(ScrollViewer1.HorizontalOffset.ToString())); 
} 
関連する問題