我可以将ScrollBar设置为浮动步骤吗?

时间:2010-01-20 17:46:15

标签: .net winforms scrollbar

我有一个女巫小组,我代表一个时间表 - 24小时(24 x 60 min = 1 440 min)。

我需要将滚动条的步骤设置为一分钟。很明显,此类面板的最小尺寸应为1440像素。

假设客户端屏幕(宽度)上的屏幕分辨率为1280,那么面板容器最大尺寸为1280。 现在,如果我希望我的步骤是一分钟,我需要将步骤设置为滚动条的容器1280 / 1440 = 0.(8) - 但这是不可能的,因为Step(myContainer.Horizo​​ntalScroll.SmallChange)是int值。 ..

我能为此做些什么吗?

修改

每分钟0.2像素可能被认为是不可观察的错误,但如果我的步数为5分钟,那么实际上它将是4.(4)px但是在滚动条= 5时,10分钟的步长将是= 8 (8)px:10px。在800x600屏幕上,10分钟步长将是= 5.(5)px:10px,因此在每2次点击(20分钟)中我有4像素错误。这个“三角洲”变得可见。

最后,这是一个示例,不能正常工作 - 即使我到达使滚动条可见 - 奇怪的滚动条可见性是不可预测的...... - 我无法滚动所有VOLVO徽标6(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);
    }
}

1 个答案:

答案 0 :(得分:0)

以像素为单位设置ClientSize(1440)并保留小变化= 1.它也将以像素为单位并与您的分钟匹配。