Как можно перевсти фокус с одно текст бокста на другой, ну или на кнопку например.
Все. нашел :
Код:
.Focus()
Как можно сделать обрашение к нужному текст боксу по кнопке, например :
Код:
Public Class Form1
Dim x As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
x += 1
TextBox(x).Focus()
End Sub
End Class
что-то в этом роде.
Все сделал :
Код:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim n As Integer
Dim l As Integer
Dim s As Integer
Do Until n = 4
n += 1
Dim tb As New TextBox
tb.Size = New Size(55, 20)
tb.Location = New Point(12 + l + s, 12)
tb.MaxLength = 4
s = tb.Size.Width
l = tb.Location.X
AddHandler tb.TextChanged, AddressOf T
Controls.Add(tb)
Me.Size = New Size(tb.Location.X + 30 + 55, 78)
Loop
End Sub
Dim v As TextBox
Dim ti As Integer
Private Sub T(ByVal sender As System.Object, ByVal e As System.EventArgs)
If TypeOf sender Is TextBox Then
v = sender
If v.Text.Length = 4 Then
ti = v.TabIndex
ti += 1
Debug.Print(ti)
Try
nachalo: If TypeOf Controls.Item(ti) Is TextBox Then
Debug.Print(ti)
Controls.Item(ti).Focus()
Debug.Print(Controls.Item(ti).Name)
Else
ti += 1
GoTo nachalo
End If
Catch
Dim TB As TextBox
For Each x As TextBox In Controls
If TypeOf x Is TextBox Then
TB = x
TB.Enabled = False
End If
Next
End Try
End If
End If
End Sub
End Class
Правда надо немного подшаманить, чтобы ошибки не лезли
Не могу понять как обращаться к объектам из BackgroundWorker. Прочитал
этот пост, но ничего путного не нашел.
вот сам код :
Код:
На форму кинул 3 TextBox'a, BackgroundWorker, ProgressBar, Кнопку
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
If TextBox1.Text <> "" And TextBox2.Text <> "" Then
If TextBox1.Text <> "0" Or TextBox2.Text <> "0" Then
TextBox3.Text = Math.Round(Val(TextBox1.Text / TextBox2.Text / 60), 2) & " мин."На это сторке начинает "орать" : "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "TextBox3" не из того потока, в котором он был создан."
End If
End If
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
End Class
Как работать с модулями?