如何同步两个列表框的滚动
本文关键字:列表 滚动 两个 何同步 同步 | 更新日期: 2023-09-27 18:12:11
我有一个checkkedlistbox和一个listbox,它们的高度相同,其中的项目数量相同。我使用列表框来保存checklistbox的状态。
如果有滚动条,那么滚动checklistbox也应该滚动具有相同索引的listbox。除了滚动量不同,我还能做到。
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;
}
}
此外,我使用这段代码来获得选中的相同索引,但是在从checklistbox中进行选择之后,在列表框索引被选中之前会有轻微的延迟。无论如何,让它同时被选中?
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);
}
}
}
您可以将列表框放在Two scrollviewer中,并在viewChanged事件中编写xaml.cs部分
的代码private void ScrollViewer1_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
ScrollViewer2.ScrollToHorizontalOffset(double.Parse(ScrollViewer1.HorizontalOffset.ToString()));
}
http://www.codeguru.com/cpp/controls/listview/article.php/c4163
http://www.codeproject.com/Tips/197335/Synchronized-ListBox-objects-or-how-to-scroll-2-Li