お世話さまです。皆さまのお知恵を貸して頂きたく、お願い致します。
画面描画について教えて頂きたいと思っています。
画面描画につていは、初心者すぎてしまい、色々と調べましたがわかりませんでした。
☆環境☆
Windows10 64bit
Visual Studio2017
C# (.Net 4.7.2)
☆実現したいこと☆
Panelの内容をボタン押下、スクロールバー操作によって、スクロールさせたい。
☆質問事項☆
PanelでのAutoScrollの制御です。
フォーム上にPanelを一つとボタン2つを配置し、Panleには塗りつぶした四角形をPanelの右端から左端にかけて10個描画します。
初期表示状態ではスクロールバーも一番右端に表示するようにしておきます。
ボタン1を押すとPanelの内容とスクロールバーが右へスクロールし、ボタン2を押すとPanelの内容とスクロールバーが左へスクロールするようにしたいのですが、スクロールバーとスクロール時のPanelの再描画をどのように行ったら良いのかわかりません。
ボタンのクリックイベント内でスクロール処理を行うのでしょうか?
☆ソースコード☆
C#
1using System; 2using System.Drawing; 3using System.Windows.Forms; 4 5namespace WindowsFormsApp1 6{ 7 public partial class Form1 : Form 8 { 9 int horScrollValue = 0; 10 int verScrollValue = 0; 11 12 bool isFirstTime = true; 13 14 public Form1() 15 { 16 InitializeComponent(); 17 18 } 19 20 private void panel1_Paint(object sender, PaintEventArgs e) 21 { 22 panel1.AutoScroll = true; 23 panel1.AutoScrollMinSize = new Size(25 * 10, 25 * 0); 24 25 if(isFirstTime) 26 { 27 panel1.HorizontalScroll.Value = HorizontalScroll.Maximum; 28 isFirstTime = false; 29 } 30 31 32 Graphics g = panel1.CreateGraphics(); 33 g.Clear(SystemColors.Control); 34 35 for (int i = 0; i < 10; i++) 36 { 37 g.FillRectangle(Brushes.DeepSkyBlue, 38 panel1.ClientSize.Width - 20 + horScrollValue - (i * 25), 39 panel1.ClientSize.Height - 20 + verScrollValue, 40 20, 41 20); 42 } 43 } 44 45 private void button1_Click(object sender, EventArgs e) 46 { 47 // 右へスクロールする処理を記述 48 } 49 50 private void button2_Click(object sender, EventArgs e) 51 { 52 // 左へスクロールする処理を記述 53 } 54 } 55} 56
回答3件
あなたの回答
tips
プレビュー