Winフォームアプリでは、2つのリストビューを使用して2つのファイルを比較しています。ユーザーがフォルダブラウザを使用して2つのファイルを選択すると、ファイルはリストビューにロードされます。一致しないファイルと行を比較すると、異なる色で表示されます。これは絶対にうまくいきます。これで、一方のリストビューをスクロールするときに、もう一方のリストビューも同じ量でスクロールする必要があります。試しましたが、リストビューの水平スクロールまたは垂直スクロールのプロパティを設定できません。これどうやってするの ?前もって感謝します。
2674 次
3 に答える
2
カスタムリストビューを作成して、スクロールを検出し、スクロールメッセージを他のテキストボックスに渡して、同期してスクロールできるようにする必要があります。
class SyncListView: ListView
{
public SyncListView()
{
}
public Control Buddy { get; set; }
private static bool scrolling; // In case buddy tries to scroll us
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
// Trap WM_VSCROLL message and pass to buddy
if ((m.Msg == 0x115 || m.Msg == 0x20a) && !scrolling && Buddy != null && Buddy.IsHandleCreated)
{
scrolling = true;
SendMessage(Buddy.Handle, m.Msg, m.WParam, m.LParam);
scrolling = false;
}
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
于 2013-02-11T04:57:40.140 に答える
0
マネージド コードのみを使用して、 Better ListViewまたはBetter ListView Expressでこれを行うこともできます。
public class CustomListView : BetterListView
{
public void SynchronizeScroll(BetterListView listView)
{
VScrollBar.Value = listView.VScrollProperties.Value;
}
}
VScrollPropertiesChanged イベントを次のように処理します。
private void ListViewVScrollPropertiesChanged(object sender, BetterListViewScrollPropertiesChangedEventArgs eventArgs)
{
CustomListView listViewThis = (sender as CustomListView);
listViewThis.SynchronizeScroll(this.listViewAnother);
}
于 2013-02-16T15:19:00.900 に答える