не применяются параметры формы при загрузке формы

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

не применяются параметры формы при загрузке формы

Сообщение QweЯty » 09.02.2011 (Ср) 6:14

Код: Выделить всё
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Label1.Text = "LabelText1: "
        Me.Label2.Text = Form1.Temp
        Me.Label2.Location = New Point(Me.Label1.Width + 10, 4)
        Me.Width = Me.Label2.Location.X + Me.Label2.Width
        MessageBox.Show(Me.Width.ToString())

End Sub
End Class


в ээ... конструкторе сделал размеры Width 500
MessageBox.Show(Me.Label2.Location.X.ToString()) выдает тока 123

а форма все равно становиться как 500

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 09.02.2011 (Ср) 6:42

сделал так:
Код: Выделить всё
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Label1.Text = "LabelText1: "
        Me.Label2.Text = Form1.Temp
        Me.Label2.Location = New Point(Me.Label1.Width + 10, 4)
        Me.Width = Me.Label2.Location.X + Me.Label2.Width
        MessageBox.Show(Me.Width.ToString())
        MessageBox.Show(Me.Label2.Location.X.ToString())
        MessageBox.Show(Me.Label2.Width.ToString())

End Sub
End Class


в чем прикол...

первое значение при любом раскладе 123
второе 58/48/68 (менял New Point(Me.Label1.Width + 10, 4) на 0 10 20)
третье 39/39/39

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: не применяются параметры формы при загрузке формы

Сообщение FireFenix » 09.02.2011 (Ср) 13:59

Не знаю что вы употребляете, но может оно и не должно работать из-за такой логики?
При лоаде ровнять лейблы - жуть, проще сразу в редакторе формочек

Код: Выделить всё
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Console.WriteLine(Me.Width & "x" & Me.Height)
        Console.WriteLine(Me.Label1.Width & ":" & Me.Label1.Location.X & " " & Me.Label2.Width & ":" & Me.Label2.Location.X)

        Me.Label1.Text = "LabelText1: "

        Console.WriteLine("Label1: " & Me.Label1.Width & ":" & Me.Label1.Location.X)

        Me.Label2.Text = Me.Text

        Console.WriteLine("Label2: " & Me.Label2.Width & ":" & Me.Label2.Location.X)

        Me.Label2.Location = New Point(Me.Label1.Width + 10, 10)

        Me.Width = Me.Label2.Location.X + Me.Label2.Width

        Console.WriteLine(Me.Label1.Width & ":" & Me.Label1.Location.X & " " & Me.Label2.Width & ":" & Me.Label2.Location.X)
        Console.WriteLine(Me.Width & "x" & Me.Height)
    End Sub

Код: Выделить всё
300x300
39:83 39:83
Label1: 66:83
Label2: 36:83
66:83 36:76
132x300

Me.Label2.Location.X = 66 + 10 = 76
Me.Width = 76 + 36 = 112, но т.к. выбран BorderStyle не [None или ToolWindow], то в шапке кнопочки min,max,close не влезают, поэтому форма автоматически растягивается до минимально размера 132
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 09.02.2011 (Ср) 18:22

При лоаде ровнять лейблы - жуть, проще сразу в редакторе формочек

увы, но надо:)
тем более что Text в Label задается в других формах, это я для тестов сделал чтобы они грузились в load... так как текст выходит за пределы и когда label1 label2 очень большие, то label2 налезает на label1...
точнее наборот, label1 подлезает под label2...

из-за этого и приходиться расчитывать сначала Label2.Location. ну а так как он тоже изменился, то и ширину...

у меня просто форма, без служебных кнопок "min,max,close" и всего остального. просто квадрат без ничего....


блин, Label1 и label2 нормально отображатся а вот форма хоть тресни "123"

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: не применяются параметры формы при загрузке формы

Сообщение FireFenix » 09.02.2011 (Ср) 18:53

QweЯty писал(а):у меня просто форма, без служебных кнопок "min,max,close" и всего остального. просто квадрат без ничего....

У меня всё работает, как я писал. Отлаживай по шагам и смотри, что не так
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 09.02.2011 (Ср) 19:23

чувствую где то в свойствах формы накосячил...
какие свойства могут влиять на это?

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 09.02.2011 (Ср) 19:45

на вот это:

Код: Выделить всё
        Me.Label1.Location = New Point(4, 4)
        Me.Label1.Text = "00.00.11"
        Me.Label2.Text = "00.00.22"
        Me.Label2.Location = New Point(Me.Label1.Width + 10, 4)
        Me.Width = (Me.Label1.Location.X + Me.Label2.Width)
        MessageBox.Show(Me.Label1.Width.ToString())
        MessageBox.Show(Me.Label2.Width.ToString())
        MessageBox.Show(Me.Label2.Location.X.ToString())
        MessageBox.Show(Me.Width.ToString())


выдает:

49
49
59
53!!! откуда???:(

UPD.
я ошибся вот тут:
Код: Выделить всё
        Me.Width = (Me.Label1.Location.X + Me.Label2.Width)

надо
Код: Выделить всё
        Me.Width = (Me.Label2.Location.X + Me.Label2.Width)


пока что заработало....

буду дальше делать...

заодно вопрос...

имеем 3 label:
label3
label5
label7

Text в них задается "рандомными" значениями из других форм...

как узнать какая из них самая широкая?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: не применяются параметры формы при загрузке формы

Сообщение FireFenix » 09.02.2011 (Ср) 22:32

К.О. намекает проверить значение Width всех лейблов
Т.к. ты лейблы двигаешь кодом, то проще их тоже создавать кодом и обходить как массив

Код: Выделить всё
Dim Labels as New List(Of Label)

'[Код добавления лейблов] Labels.Add()

Dim Label as Integer
Dim Max as Integer

For i = 0 to  Lables.Length - 1
    If Lables(i).Width > Max Then
        Label = i
        Max = Lables(i).Width
    End If
Next
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 09.02.2011 (Ср) 23:05

у меня немного не так прорисовывается форма...
щаз всю доделаю и выложу работоспособный код с багом который и хочу исправить...

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 10.02.2011 (Чт) 2:20

имеем код:

Код: Выделить всё
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.ForeColor = Form1.colfonfrm
        Me.Font = Form1.fontfrm
        Me.BackColor = Form1.coltetfrm
        If (Form1.ComboBox8.SelectedIndex = 0) Then
            Me.Label1.Location = New Point(4, 4)
            Me.Label1.Text = "В тени: "
            Me.Label2.Text = Form1.Temp
            Me.Label2.Location = New Point(Me.Label1.Width + 10, 4)
            Me.Width = (Me.Label2.Location.X + Me.Label2.Width + 4)
            Me.Height = (Me.Label1.Height + 8)
        Else
            Me.Label1.Location = New Point(4, 4)
            Me.Label1.Text = "В тени: "
            Me.Label2.Text = Form1.Temp
            Me.Label2.Location = New Point(Me.Label1.Width + 10, 4)
            Me.Width = (Me.Label2.Location.X + Me.Label2.Width)
            Me.Height = (Me.Label1.Height)
            If (Form1.ComboBox8.SelectedIndex <> 0) Then
                Me.Label3.Visible = True
                Me.Label4.Visible = True
                If (Form1.ComboBox8.Text = "Давление") Then
                    Me.Label3.Text = "Давление: "
                    Me.Label4.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox8.Text = "Влажность") Then
                    Me.Label3.Text = "Влажность: "
                    Me.Label4.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox8.Text = "На солнце") Then
                    Me.Label3.Text = "На солнце: "
                    Me.Label4.Text = Form1.TempSun
                End If
                If (Form1.ComboBox8.Text = "Точка росы") Then
                    Me.Label3.Text = "Точка росы: "
                    Me.Label4.Text = Form1.TempTck
                End If
                Me.Label3.Location = New Point(4, Me.Height + 10)
                Me.Label4.Location = New Point(Me.Label3.Width + 10, Me.Height + 10)
                Me.Width = (Me.Label4.Location.X + Me.Label4.Width + 4)
                Me.Height = (Me.Label3.Location.Y + Me.Height + 8)
                'MessageBox.Show(Me.Label3.Width.ToString())
                'MessageBox.Show(Me.Label4.Width.ToString())
                'MessageBox.Show(Me.Label4.Location.X.ToString())
                'MessageBox.Show(Me.Width.ToString())
                'MessageBox.Show(Me.Height.ToString())
            End If
            If (Form1.ComboBox9.SelectedIndex <> 0) Then
                Me.Label5.Visible = True
                Me.Label6.Visible = True
                If (Form1.ComboBox9.Text = "Давление") Then
                    Me.Label5.Text = "Давление: "
                    Me.Label6.Text = "100 Бар."
                    Me.Label6.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox9.Text = "Влажность") Then
                    Me.Label5.Text = "Влажность: "
                    Me.Label6.Text = Form1.Vlag
                    Me.Label6.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox9.Text = "На солнце") Then
                    Me.Label5.Text = "На солнце: "
                    Me.Label6.Text = Form1.TempSun
                End If
                If (Form1.ComboBox9.Text = "Точка росы") Then
                    Me.Label5.Text = "Точка росы: "
                    Me.Label6.Text = Form1.TempTck
                End If
                Me.Label5.Location = New Point(4, Me.Height)
                Me.Label6.Location = New Point(Me.Label5.Width + 10, Me.Height)
                Me.Width = (Me.Label6.Location.X + Me.Label6.Width + 4)
                Me.Height = (Me.Label5.Location.Y + Me.Label5.Height + 8)
                'MessageBox.Show(Me.Label3.Width.ToString())
                'MessageBox.Show(Me.Label4.Width.ToString())
                'MessageBox.Show(Me.Label4.Location.X.ToString())
                'MessageBox.Show(Me.Width.ToString())
                'MessageBox.Show(Me.Height.ToString())
            End If
            If (Form1.ComboBox10.SelectedIndex <> 0) Then
                Me.Label7.Visible = True
                Me.Label8.Visible = True
                If (Form1.ComboBox10.Text = "Давление") Then
                    Me.Label7.Text = "Давление: "
                    Me.Label8.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox10.Text = "Влажность") Then
                    Me.Label7.Text = "Влажность: "
                    Me.Label8.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox10.Text = "На солнце") Then
                    Me.Label7.Text = "На солнце: "
                    Me.Label8.Text = Form1.TempSun
                End If
                If (Form1.ComboBox10.Text = "Точка росы") Then
                    Me.Label7.Text = "Точка росы: "
                    Me.Label8.Text = Form1.TempTck
                End If
                Me.Label7.Location = New Point(4, Me.Height)
                Me.Label8.Location = New Point(Me.Label7.Width + 10, Me.Height)
                Me.Width = (Me.Label8.Location.X + Me.Label8.Width + 4)
                Me.Height = (Me.Label7.Location.Y + Me.Label7.Height + 8)
            End If
            If (Form1.ComboBox11.SelectedIndex <> 0) Then
                Me.Label9.Visible = True
                Me.Label10.Visible = True
                If (Form1.ComboBox11.Text = "Давление") Then
                    Me.Label9.Text = "Давление: "
                    Me.Label10.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox11.Text = "Влажность") Then
                    Me.Label9.Text = "Влажность: "
                    Me.Label10.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox11.Text = "На солнце") Then
                    Me.Label9.Text = "На солнце: "
                    Me.Label10.Text = Form1.TempSun
                End If
                If (Form1.ComboBox11.Text = "Точка росы") Then
                    Me.Label9.Text = "Точка росы: "
                    Me.Label10.Text = Form1.TempTck
                End If
                Me.Label9.Location = New Point(4, Me.Height)
                Me.Label10.Location = New Point(Me.Label9.Width + 10, Me.Height)
                Me.Width = (Me.Label10.Location.X + Me.Label10.Width + 4)
                Me.Height = (Me.Label9.Location.Y + Me.Label9.Height + 8)
            End If
        End If

    End Sub


все работает так как надо, по части динамического расположения текста.

но возникает неприятная бага, отображенная на картинке.

сделал так:

Код: Выделить всё
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Y As Integer
        Dim Listlbl As List(Of Label)
        Listlbl = New List(Of Label)
        Listlbl.Add(Label1)
        Listlbl.Add(Label3)
        Listlbl.Add(Label5)
        Listlbl.Add(Label7)
        Listlbl.Add(Label9)
        Y = LabelCount(Listlbl, 10)

        Me.ForeColor = Form1.colfonfrm
        Me.Font = Form1.fontfrm
        Me.BackColor = Form1.coltetfrm
        If (Form1.ComboBox8.SelectedIndex = 0) Then
            Me.Label1.Location = New Point(4, 4)
            Me.Label1.Text = "В тени: "
            Me.Label2.Text = Form1.Temp
            Me.Label2.Location = New Point(Y, 4)
            Me.Width = (Me.Label2.Location.X + Me.Label2.Width + 4)
            Me.Height = (Me.Label1.Height + 8)
        Else
            Me.Label1.Location = New Point(4, 4)
            Me.Label1.Text = "В тени: "
            Me.Label2.Text = Form1.Temp
            Me.Label2.Location = New Point(Y, 4)
            Me.Width = (Me.Label2.Location.X + Me.Label2.Width)
            Me.Height = (Me.Label1.Height)
            If (Form1.ComboBox8.SelectedIndex <> 0) Then
                Me.Label3.Visible = True
                Me.Label4.Visible = True
                If (Form1.ComboBox8.Text = "Давление") Then
                    Me.Label3.Text = "Давление: "
                    Me.Label4.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox8.Text = "Влажность") Then
                    Me.Label3.Text = "Влажность: "
                    Me.Label4.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox8.Text = "На солнце") Then
                    Me.Label3.Text = "На солнце: "
                    Me.Label4.Text = Form1.TempSun
                End If
                If (Form1.ComboBox8.Text = "Точка росы") Then
                    Me.Label3.Text = "Точка росы: "
                    Me.Label4.Text = Form1.TempTck
                End If
                Me.Label3.Location = New Point(4, Me.Height + 10)
                Me.Label4.Location = New Point(Y, Me.Height + 10)
                Me.Width = (Me.Label4.Location.X + Me.Label4.Width + 4)
                Me.Height = (Me.Label3.Location.Y + Me.Height + 8)
                'MessageBox.Show(Me.Label3.Width.ToString())
                'MessageBox.Show(Me.Label4.Width.ToString())
                'MessageBox.Show(Me.Label4.Location.X.ToString())
                'MessageBox.Show(Me.Width.ToString())
                'MessageBox.Show(Me.Height.ToString())
            End If
            If (Form1.ComboBox9.SelectedIndex <> 0) Then
                Me.Label5.Visible = True
                Me.Label6.Visible = True
                If (Form1.ComboBox9.Text = "Давление") Then
                    Me.Label5.Text = "Давление: "
                    Me.Label6.Text = "100 Бар."
                    Me.Label6.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox9.Text = "Влажность") Then
                    Me.Label5.Text = "Влажность: "
                    Me.Label6.Text = Form1.Vlag
                    Me.Label6.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox9.Text = "На солнце") Then
                    Me.Label5.Text = "На солнце: "
                    Me.Label6.Text = Form1.TempSun
                End If
                If (Form1.ComboBox9.Text = "Точка росы") Then
                    Me.Label5.Text = "Точка росы: "
                    Me.Label6.Text = Form1.TempTck
                End If
                Me.Label5.Location = New Point(4, Me.Height)
                Me.Label6.Location = New Point(Y, Me.Height)
                Me.Width = (Me.Label6.Location.X + Me.Label6.Width + 4)
                Me.Height = (Me.Label5.Location.Y + Me.Label5.Height + 8)
                'MessageBox.Show(Me.Label3.Width.ToString())
                'MessageBox.Show(Me.Label4.Width.ToString())
                'MessageBox.Show(Me.Label4.Location.X.ToString())
                'MessageBox.Show(Me.Width.ToString())
                'MessageBox.Show(Me.Height.ToString())
            End If
            If (Form1.ComboBox10.SelectedIndex <> 0) Then
                Me.Label7.Visible = True
                Me.Label8.Visible = True
                If (Form1.ComboBox10.Text = "Давление") Then
                    Me.Label7.Text = "Давление: "
                    Me.Label8.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox10.Text = "Влажность") Then
                    Me.Label7.Text = "Влажность: "
                    Me.Label8.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox10.Text = "На солнце") Then
                    Me.Label7.Text = "На солнце: "
                    Me.Label8.Text = Form1.TempSun
                End If
                If (Form1.ComboBox10.Text = "Точка росы") Then
                    Me.Label7.Text = "Точка росы: "
                    Me.Label8.Text = Form1.TempTck
                End If
                Me.Label7.Location = New Point(4, Me.Height)
                Me.Label8.Location = New Point(Y, Me.Height)
                Me.Width = (Me.Label8.Location.X + Me.Label8.Width + 4)
                Me.Height = (Me.Label7.Location.Y + Me.Label7.Height + 8)
            End If
            If (Form1.ComboBox11.SelectedIndex <> 0) Then
                Me.Label9.Visible = True
                Me.Label10.Visible = True
                If (Form1.ComboBox11.Text = "Давление") Then
                    Me.Label9.Text = "Давление: "
                    Me.Label10.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox11.Text = "Влажность") Then
                    Me.Label9.Text = "Влажность: "
                    Me.Label10.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox11.Text = "На солнце") Then
                    Me.Label9.Text = "На солнце: "
                    Me.Label10.Text = Form1.TempSun
                End If
                If (Form1.ComboBox11.Text = "Точка росы") Then
                    Me.Label9.Text = "Точка росы: "
                    Me.Label10.Text = Form1.TempTck
                End If
                Me.Label9.Location = New Point(4, Me.Height)
                Me.Label10.Location = New Point(Y, Me.Height)
                Me.Width = (Me.Label10.Location.X + Me.Label10.Width + 4)
                Me.Height = (Me.Label9.Location.Y + Me.Label9.Height + 8)
            End If
       

        End If



    End Sub



    Private Function LabelCount(ByRef Leftlist As List(Of Label), ByVal offset As Byte) As Integer
        Dim j As Integer
        j = 0
        REM  Dim Mylbl As Label
        Dim listwight As Integer
        While j <> 4
            If (Leftlist(j).Width > Leftlist(j + 1).Width) Then
                listwight = Leftlist(j).Width
            End If
            j = j + 1
        End While
        Return listwight + offset
    End Function


Y = LabelCount(Listlbl, 10)
messagebox.show(y.tostring())
отображает самый широкий label из списка Listlbl

а почему не применяет?

не применяется значение Y

чего хочу добиться:

чтобы расчитывалось самое большое значение label.wigth из списка Listlbl
и уже от него плясало отображение остальных label а то в раскоряку отображаются :(
Вложения
Безымянный.JPG
Безымянный.JPG (3.97 Кб) Просмотров: 4704

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: не применяются параметры формы при загрузке формы

Сообщение FireFenix » 10.02.2011 (Чт) 11:08

Выложи проект!
У тебя вагон контролов => чтобы запустить твой код - нада больше времени, чем сделать его работоспособным
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 10.02.2011 (Чт) 12:00

Выложи проект!


Вот.

Тока, чур, не ругаться....


У тебя вагон контролов => чтобы запустить твой код - нада больше времени, чем сделать его работоспособным


не совсем понял фразу...

там я выделил ту часть которая криво пашет...

только оно активно, остальное в компиляции отключено
Вложения
tray.work.rar
(150.22 Кб) Скачиваний: 109

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: не применяются параметры формы при загрузке формы

Сообщение FireFenix » 10.02.2011 (Чт) 17:54

Очень много говнокода... Из-за того, что отсутствует правильное форматирование, осознание, наименование, и получаются ошибки.

Ты вообще понимаешь что делает твой код?

Form1:
Код: Выделить всё
        ComboToList1(ComboBox4, MyList1)
        ComboToList1(ComboBox5, MyList2)
        ComboToList1(ComboBox6, MyList3)
        ComboToList1(ComboBox7, MyList4)
        ComboToList2(ComboBox8, MyList5)
        ComboToList2(ComboBox9, MyList6)
        ComboToList2(ComboBox10, MyList7)
        ComboToList2(ComboBox11, MyList8)
        ComboToTrayList(ComboBox12, MyTrayList1)
        ComboToTrayList(ComboBox13, MyTrayList2)
        ComboToTrayList(ComboBox14, MyTrayList3)

очередной бессмысленный код... зачем заполнять список значениями из ComboBox'ов если ты в итоге делаешь текстовое сравнение, а не с элементами списка?

Код: Выделить всё
    Private Sub ListToCombo2(ByRef Combo As ComboBox, ByRef MyList As List(Of String))
        Dim i As String
        Combo.Items.Clear()
        For Each i In MyList
            Combo.Items.Add(i)
        Next
    End Sub

    Private Sub ComboToList2(ByRef Combo As ComboBox, ByRef MyList As List(Of String))
        Dim i As String
        For Each i In Combo.Items
            MyList.Add(i)
        Next
    End Sub

Зачем дублировать одинаковые функции? Создать одну и её использовать для всех случаев...

Form2:
после каждой проверки If (Form1.комбобокс.SelectedIndex = 0) Then устанавливается новая ширина окна, невзирая на то что выше идущие блоки могут быть длиннее текущего

Все строчки подобные этой лишены смысла Me.Label10.Location = New Point(Y, Me.Height)

Код: Выделить всё
                If (Form1.ComboBox9.Text = "Давление") Then
                    Me.Label5.Text = "Давление: "
                    Me.Label6.Text = "100 Бар."
                    Me.Label6.Text = Form1.TempBar & " Бар."
                End If
                If (Form1.ComboBox9.Text = "Влажность") Then
                    Me.Label5.Text = "Влажность: "
                    Me.Label6.Text = Form1.Vlag
                    Me.Label6.Text = Form1.Vlag & " %"
                End If
                If (Form1.ComboBox9.Text = "На солнце") Then
                    Me.Label5.Text = "На солнце: "
                    Me.Label6.Text = Form1.TempSun
                End If
                If (Form1.ComboBox9.Text = "Точка росы") Then
                    Me.Label5.Text = "Точка росы: "
                    Me.Label6.Text = Form1.TempTck
                End If


Открой для себя конструкцию Select Case


Итог: На самом деле у тебя проблема не с кодом, а с алгоритмами и понимаем того, что ты пишешь... Ведь половина - мусор!
Если весь код почистить, свести логику к более менее оптимальной, то ошибку будет довольно легко найти

По данному вопросу: Ошибка в логики блоков, а так же в коде вторых лейблов в каждом блоке
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 10.02.2011 (Чт) 21:33

я знаю что там 80% не то что нужно....

честно говоря пофиг, не в этой области специалист, с VB NET знаком тока 12 дней. как и с прочими средами программирования.

по теме, а что точно?

у меня правая часть прорисовываются на форме сразу же с первой, а как сделать сначала прорисовку левых а потом правых касательно этого кода... не знаю:(

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: не применяются параметры формы при загрузке формы

Сообщение FireFenix » 10.02.2011 (Чт) 23:25

QweЯty писал(а):честно говоря пофиг, не в этой области специалист, с VB NET знаком тока 12 дней. как и с прочими средами программирования.

Ну раз пофиг, то брось всё и ничего не делай...
Без знаний основ тут делать нечего...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 10.02.2011 (Чт) 23:41

ну как то смог все таки написать все выше написанное.. и работает.. правдо криво....

начал таки, хочется доделать...

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 11.02.2011 (Пт) 7:37

переделал combox'ы :
Код: Выделить всё
    Private Sub ComboBox8_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox8.SelectionChangeCommitted
        If (ComboBox8.SelectedIndex = 0) Then
            Form2.Label1.Text = "В тени: "
            Form2.Label2.Text = Temp
            ComboBox9.SelectedIndex = 0
            ComboBox10.SelectedIndex = 0
            ComboBox11.SelectedIndex = 0
        Else
            Dim NumOfSelectedItem As Byte
            NumOfSelectedItem = ComboBox8.SelectedIndex
            If (ComboBox8.SelectedIndex <> 0) Then
                MyList2.RemoveAt(NumOfSelectedItem)
                ListToCombo2(ComboBox9, MyList2)
                ListToCombo2(ComboBox10, MyList2)
                ListToCombo2(ComboBox11, MyList2)
                Form2.Label1.Text = "В тени: "
                Form2.Label2.Text = Temp
                Form2.Label3.Visible = True
                Form2.Label4.Visible = True
                If (ComboBox8.Text = "Давление") Then
                    Form2.Label3.Text = "Давление: "
                    Form2.Label4.Text = TempBar & " Бар."
                End If
                If (ComboBox8.Text = "Влажность") Then
                    Form2.Label3.Text = "Влажность: "
                    Form2.Label4.Text = Vlag & " %"
                End If
                If (ComboBox8.Text = "На солнце") Then
                    Form2.Label3.Text = "На солнце: "
                    Form2.Label4.Text = TempSun
                End If
                If (ComboBox8.Text = "Точка росы") Then
                    Form2.Label3.Text = "Точка росы: "
                    Form2.Label4.Text = TempTck
                End If
                MessageBox.Show(ComboBox8.Text.ToString())
            End If
        End If

    End Sub

возникает глюк:

MessageBox.Show(ComboBox8.Text.ToString()) показывает что выбрано не настоящее значение, а предыдущее..
то есть вначале было:

"не показывать"
выбрал какое то, MessageBox показал "не показывать", затем выбрал еще какоето.... MessageBox вывел то значение которое было предыдущим....

я раньше из-за этого и перенес все в лоад второй формы...

можете помочь решить...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не применяются параметры формы при загрузке формы

Сообщение Денис » 11.02.2011 (Пт) 9:06

Брось всё и ничего не делай. Быстро. Решительно.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 11.02.2011 (Пт) 9:11

/me промолчит... и пойдет дальше читать маны

QweЯty
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 08.02.2011 (Вт) 1:32

Re: не применяются параметры формы при загрузке формы

Сообщение QweЯty » 12.02.2011 (Сб) 7:36

есть список:
Код: Выделить всё
        Rightlist = New List(Of Label)
        Rightlist.Add(Label2)
        Rightlist.Add(Label4)
        Rightlist.Add(Label6)
        Rightlist.Add(Label8)
        Rightlist.Add(Label10)

функция:
Код: Выделить всё
    Private Function viewformWhd(ByRef Rightlist As List(Of Label)) As Integer
      Dim l As Integer
      Dim RightWhdlist As Integer
       l = 0
       While l <> 4
          If (Rightlist(l).Width > Rightlist(l + 1).Width) Then
              '
              '
          End If
          l = l + 1
    End While
      Return RightWhdlist
   End Function


почему если самый широкий элемент будет последним, то условие не работает:(


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList  
cron