Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Visual Basic 2008
Показать сообщение отдельно

Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Как можно перевсти фокус с одно текст бокста на другой, ну или на кнопку например.
Все. нашел :
Код: Выделить весь код
.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
Как работать с модулями?

Последний раз редактировалось Uzvern, 25-07-2008 в 19:42.


Отправлено: 23:12, 24-07-2008 | #188

Название темы: Visual Basic 2008