【解決方法】スクロールバーの位置を設定するにはどうすればよいですか?


VB.netでカレンダーを作りました。 これは、ユーザーコントロールで満たされた FlowLayoutPanel です。 縦方向に表示する自動スクロールを設定しています。

カレンダーのスクリーンショット:
カレンダー[^]

すべてのユーザー コントロールが flowlayoutpanel に設定された後、以下のコードが実行されます。 テスト目的なので、実際に動かしてみるだけです。 最初のメッセージ ボックスは、コントロールを削除した後に最大値が予想どおりに増減するため、正しい位置と最大値 (0 9221) を表示しているように見えます。 ただし、スクロールを設定すると、ロードされると上部に配置されたままになり、次に表示されるメッセージボックスにはまだ 0 と表示されます。

VB
MessageBox.Show(FlowLayoutPanel1.VerticalScroll.Value & " " & FlowLayoutPanel1.VerticalScroll.Maximum)

FlowLayoutPanel1.VerticalScroll.Value = FlowLayoutPanel1.VerticalScroll.Value + 500

MessageBox.Show(FlowLayoutPanel1.VerticalScroll.Value)

助けていただければ幸いです。

私が試したこと:

flowlayoutpanel で自動スクロールを無効にし、コードを通じてスクロールバーを追加しようとしましたが、バーがまったく表示されません。

最終的な目標は、ロード時に現在の週まで自動スクロールすることです。

解決策 1

私自身の質問に答えます。 Form_Shown イベントを追加したところ、動作するようになりました。 また、今週(またはその近く)までスクロールする最終目標のスクロール位置コードにも追加されました。 ありがとう!

Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
     Dim dateNow = DateTime.Now
     Dim dfi = DateTimeFormatInfo.CurrentInfo
     Dim calendar = dfi.Calendar

     Dim weekOfyear = calendar.GetWeekOfYear(
 dateNow,
 dfi.CalendarWeekRule,
 DayOfWeek.Sunday)

     Dim scrollPos As Integer = Convert.ToInt32(FlowLayoutPanel1.VerticalScroll.Maximum * (weekOfyear / 57))
     FlowLayoutPanel1.VerticalScroll.Value = scrollPos


 End Sub

コメント

タイトルとURLをコピーしました