나는 24 시간 (24 x 60 min = 1 440 min
)의 타임 라인을 나타내는 마녀로 패널을 가지고 있습니다.부동 스텝을 ScrollBar로 설정할 수 있습니까?
잠깐 내 스크롤바의 단계를 설정해야합니다. 그러한 패널의 최소 크기는 1440
픽셀이어야합니다.
의 클라이언트 화면 (폭)의 화면 해상도가 1280
라고하자, 그래서 내 단계는 내가 스크롤 바의 용기에 단계를 설정해야합니다 분 수 원하는 경우 패널 컨테이너의 최대 크기는 지금 1280 라고 1280/1440 = 0.(8)
-하지만 불가능합니다. 단계 (myContainer.HorizontalScroll.SmallChange)가 int
값 ...
이 작업을 수행 할 수 있습니까?
편집
어쩌면 분당 0.2 픽셀은 inobservable 오류로 간주 될 수 있지만, 내 단계는 5 분 될 경우, 그것은 실제로 4 (4) PX하지만 스크롤에 = 5하는 것 10 분의 단계는 = 8이됩니다. (8) px : 10px. 800x600 화면에서 10 분 단계는 5가됩니다. (5) px : 10px, 각 2 클릭 (20 분)에서 4 픽셀 오류가 발생합니다. 이 "델타"가 보입니다.
마지막으로,이 샘플을 이 작동하지 않습니다이다 - 나는 스크롤 볼 수 있도록 도착하더라도 - 이상한 스크롤 가시성은 ... 예측할 수 없다 - 내가 6의 모든 VOLVO 로고를 스크롤 할 수 없습니다 (60Maxim/10smallChange는) ... 단계 :
alt text http://lh6.ggpht.com/_1TPOP7DzY1E/S1eOPUlVvQI/AAAAAAAAC8M/ZFWDI_aaJxI/s800/panels.png
디자이너 :
this.panel2.BackgroundImage = ....Resources.volvo_logo;
this.panel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
코드 :
public partial class Form1 : Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
public Form1()
{
InitializeComponent();
panel1.AutoScroll = false;
panel1.HorizontalScroll.Maximum = 60;
panel1.HorizontalScroll.SmallChange = 10;
panel1.HorizontalScroll.LargeChange = 10;
panel1.HorizontalScroll.Visible = true;
panel1.Scroll += new ScrollEventHandler(panel1_Scroll);
}
void panel1_Scroll(object sender, ScrollEventArgs e)
{
Console.WriteLine(
"Scroll: OldVal {0}, NewVal {1}, Orientation {2}, Type {3}",
e.OldValue, e.NewValue, e.ScrollOrientation, e.Type);
}
}