Za każdym razem, gdy klikam obszar kontroli użytkownika, podświetla kombi, co sprawia, że jeśli spróbuję przewinąć do dołu ekranu, przewija się tylko kombi.
Próbowałem wkładać somelabel.focus()
w zdarzeniu kliknięcia dla kontrolki użytkownika. Ten rodzaj działa. Nie pozwala mi to jednak przejść do części kontrolki, w której somelabel
nie jest widoczny, co wydaje mi się trochę dziwne. Oczywiście muszę mieć możliwość przewijania do samego końca kontroli użytkownika.
Informacje dodatkowe: jest to projekt winForms, a kontrolka użytkownika działa na czasomierzu, gdzie jedynymi kontrolkami są combobox
a niektóre labels
które mają swoje .text
właściwość aktualizowana za każdym razem, gdy zegar zapętla się.
AKTUALIZACJA:Próbowałem wyłączyć licznik czasu i wygląda na to, że po zmianie fokusu na jedną z etykiet mogę teraz przewijać całą stronę do samego dołu strony. Więc wydaje się, że jest to problem z zegarem.
Oto kod, który odtwarza problem. Jeśli klikniesz na panel, nabiera on ostrości, ale nie pozwala na przewijanie za pomocą kółka przewijania. Spowoduje to przywrócenie górnej części panelu na górę ekranu. Jeśli jednak nie włączysz timera, możesz swobodnie przewijać.
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
Odpowiedzi:
0 dla odpowiedzi № 1Możesz dodać Panel
z Dock=Fill
i AutoScroll=true
w którym wstawiasz kontrolki. Następnie dodaj zdarzenie kliknięcia dla panelu:
private void panel1_Click(object sender, EventArgs e)
{
this.ActiveControl = panel1;
}
W ten sposób, jeśli klikniesz wewnątrz panelu (który wypełni całość UserControl
) panel będzie aktywny i będzie można przewijać. Nie wpłynie to na elementy sterujące wewnątrz panelu, więc możesz pracować z nimi w zwykły sposób.