1

2 つのリスト ビューを同期して、そのうちの 1 つが実質的に 1 つの列の「フリーズ ペイン」になるようにしようとしています (Excel のフリーズ ヘッダーを考えてください)。

ただし、スクロール時に一番上のアイテムを同期させるのに苦労しています。Scrollable を false に設定することで、ヘッダー リスト ビューの垂直スクロール バーと水平スクロール バーを非表示にする必要があります。これは「EnsureVisible」と「TopItem」機能を無効にしているようですが?

マスターリストビューのスクロールバーメッセージを傍受したので、いつスクロールされるかがわかりますが、何らかの理由でヘッダーリストビューの一番上の項目を更新して一致させることができません。

ヘッダーリストビューを更新するためのコードは次のとおりです。

//On vertical scroll click...
  if (e.Type == ScrollEventType.EndScroll)
  {
    int index = lvwHeader.FindItemWithText(lvwSource.TopItem.Text).Index;

    ListViewItem item = lvwHeader.Items[index];
    lvwHeader.TopItem = item;

    System.Diagnostics.Debug.WriteLine(lvwHeader.TopItem.Text + " - " + lvwSource.TopItem.Text);
  }

Scrollable = false のときに、ヘッダー リストビューでアイテムを強制的にトップアイテムとして設定する別の方法があるかどうか、またはこれにアプローチするより良い方法があるかどうか疑問に思っていました。

どうもありがとう

4

0 に答える 0