在计时器运行时滚动用户控件

时间:2015-05-20 15:23:57

标签: vb.net winforms combobox

每当我点击用户控件的区域时,它会突出显示组合框,使其如果我尝试滚动到屏幕底部,它只会滚动组合框。

我尝试将somelabel.focus()放入用户控件的click事件中。这种作品。但是,这不允许我滚动到控件的一部分somelabel不可见,这对我来说有点奇怪。我显然需要能够一直滚动到usercontrol的底部。

其他信息:这是一个winforms项目,用户控件正在一个计时器上运行,其中唯一的控件是combobox和一些labels属性已更新.text每次定时器循环。

更新:我尝试禁用计时器,看来在将焦点更改为其中一个标签后,我现在可以一直滚动到页面底部。所以这似乎与计时器有关。

以下是一些复制问题的代码。如果单击面板,它将获得焦点,但不会让您使用滚轮滚动。 它会将面板的顶部带回屏幕顶部。但是,如果您没有打开计时器,则可以自由滚动。

Public i As Integer
Public iString As String

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        iString = i.ToString()
        Label1.Text = iString
        Label2.Text = iString
        Label3.Text = iString
        Label4.Text = iString
        Label5.Text = iString
        i += 1
    End Sub

    Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub

    Private Sub Panel1_Click1(sender As Object, e As EventArgs) Handles Panel1.Click
        Panel1.Focus()
    End Sub

1 个答案:

答案 0 :(得分:0)

您可以添加Dock=Fill AutoScroll=trueprivate void panel1_Click(object sender, EventArgs e) { this.ActiveControl = panel1; } 来插入控件。然后为面板添加click事件:

UserControl

这样,如果您单击面板内部(填充整个<script> function myFunction(){ //function } </script> <input id="price-postfix1" onclick="myFunction()" name="price-postfix" type="radio" value="$option1"/>Option1<br> <input id="price-postfix2" onclick="myFunction()" name="price-postfix" type="radio" value="$option2"/>Option1<br> <input id="price-postfix3" onclick="myFunction()" name="price-postfix" type="radio" value="$option3"/>Option1<br> <input id="price-postfix" name="price-postfix" type="text" readonly="readonly" value="$result"/> ),面板将处于活动状态,您可以滚动。这不会影响面板内的控件,因此您可以按照常规方式使用它们。