Всеки път, когато щракнете върху областта на контрола на потребителя, той подчертава комбинираната кутия, правейки го така, че ако се опитам да превъртя до долната част на екрана, той преминава само през комбинираната кутия.
Опитах да пусна somelabel.focus()
в събитието щракване за контрола на потребителя. Този вид работи. Това обаче не ми позволява да превъртам до част от контрола къде somelabel
не се вижда, което ми се струва малко странно. Явно трябва да мога да превъртя докрай до дъното на usercontrol.
Допълнителна информация: Това е проект за winforms и потребителският контрол се изпълнява на таймер, където единствените контроли са combobox
и няколко labels
които имат своите .text
свойство се актуализира всеки път, когато таймерът се завърта.
UPDATE: Опитах да деактивирам таймера и изглежда, че след като промених фокуса към един от етикетите, вече съм в състояние да превъртате до края на страницата. Така че изглежда проблемът му с таймера.
Ето някакъв код, който репликира проблема. Ако щракнете върху панела, той придобива фокус, но няма да ви позволи да превъртате с помощта на маховика. Той ще върне горната част на панела обратно в горната част на екрана. Ако не включите таймера обаче, можете свободно да превъртате.
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
Отговори:
0 за отговор № 1Бихте могли да добавите a Panel
с Dock=Fill
и AutoScroll=true
в който вмъквате контролите си. След това добавете събитието за щракване на панела:
private void panel1_Click(object sender, EventArgs e)
{
this.ActiveControl = panel1;
}
По този начин, ако щракнете вътре в панела (което запълва цялото UserControl
), панелът ще бъде активен и можете да превъртате. Това няма да повлияе на контролите вътре в панела, така че можете да работите с тях по обичайния начин.