0

これを説明するのは難しいでしょう。

カスタムコントロールの動作は次のとおりです。

  1. ContainerControlとVScrollBarを含むカスタムリストビューを作成しました
  2. リストビュー内のアイテムはContainerControlに追加され、スクロール移動すると、アイテムはContainerControl内で再配置されます。

これがカスタムリストビューの基本的な考え方です。

現在:各ListviewItemの高さは111で、チャームのように機能します。正確に295個のアイテムを追加するまで、その後のアイテムは奇妙に見えるものになります。

各ListviewItemには、Picturebox、プログレスバー、ラベル、いくつかのボタン、Paintイベントのカスタムペイントなどが含まれています。

これで、(Paintイベントで)ペイントされるListviewItemsのすべてが正しく配置されます。ただし、Controls.Add()で追加されているコントロールの一部(!)はそうではなく、負のY値を取得しているように見えます。

SomeControl.Location = new Point(x、y)の後にブレークポイントを設定すると、コントロールは正しい値になりますが、Controls.Add()を使用してListviewItemにコントロールを追加した後、Y値は負になります。最も奇妙な部分は、一部のコントロールがこれを取得しないことです。これは、この問題を解決する方法である可能性があります。

私が理解しようとしていることを理解していただければ幸いです。何か理解できないことがあれば、私に聞いてください。

編集:これはWinFormsです。Control.Location = x;だけなので、多くのコードを表示することはできません。およびControls.Add(c);

4

0 に答える 0