Сделать модуль стартовым объектом в WinForms приложении

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

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

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сделать модуль стартовым объектом в WinForms приложении

Сообщение Qwertiy » 19.09.2013 (Чт) 12:58

insite2012, 19.09.2013 12:46 MSK писал(а):Добрый день.
У меня вопрос, в общем. мелочь, и не стал создавать по нему тему, чтобы не отвлекать внимание такими пустяками.
Делаю сейчас тестовый проект, там форма и модуль. И вот никак не могу поставить, чтобы стартовым объектом был именно модуль, а не форма. В свойствах проекта в выпадающем списке стоит только форма, и все.
Если не трудно, подскажите, возможно так сделать, и если да, то как.
Заранее спасибо.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 19.09.2013 (Чт) 12:59

Надо снять флажок Enable Application Framework.

PS: Форум для того и нужен, чтобы не писать такие вопросы в ЛС.

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 15:09

Qwertiy писал(а):Надо снять флажок Enable Application Framework.

PS: Форум для того и нужен, чтобы не писать такие вопросы в ЛС.

Спасибо, уважаемый! Но как бы вопрос-то мелочь, и не хотелось, чтобы смеялись над такой безграмотностью)))
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 15:36

insite2012 писал(а):и не хотелось, чтобы смеялись над такой безграмотностью)))

Тут и более бессмысленные вопросы задают ;)

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 17:01

Спасибо за поддержку)))
Если не трудно, подскажите ответ на еще один вопрос.
У меня на форме 16 текстовых полей. В них в Хекс формате будут вводится данные, которые потом будут конвертироваться в два байтовых массива. начальный и конечный адреса.
Так вот, я решил, дабы не делать по очереди конвертацию каждого поля из текста в байты. решил создать массив текстовых полей и программным способом вывести на форму. В таком случае мне, естественно, потом проще будет у ним обращаться, и я смогу загнать все это в цикл при конвертации. Но вот что-то никак не могу создать такой массив...
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 17:12

Ну просто объявляешь массив, а потом добавляешь поля в коллекцию контролов формы. Ну и все хендлеры на них надо будет вешать руками (если нужны).
И что-то я не понял, почему 16 полей в 2 адреса и почему адреса - массивы... Хотя.. В смысле будет 8 диапазонов начало-конец?

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 17:15

Да, примерно так. Ну вот что-то не создается... Один я создаю без проблем, и на форме он отображается. а вот создать их в цикле что-то никак не получается...
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 17:19

Покажи код. А для начала проверь, что задаёшь им координаты, иначе они все кучкой ложатся в точку (0, 0) ;)

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 17:23

Просто я еще ни разу именно массив элементов управления не создавал, не было необходимости. А тут прикинул, полей много, и потом, в программе, если мне строки из них переводить в байты, то придется делать это по каждому полю. Ну и решил, а если создать из них массив и потом в цикле конвертировать из строк в байты. Будет быстрее и удобнее.
А код - да я толком и не знаю, как это делается... Пробую по аналогии с обычными, потому, видно, и ничего не выходит)))
Извиняюсь за такую неуклюжесть)))
Код: Выделить всё
Dim tb() as TextBox=New TextBox(){}
for i As Integer = 0 to 15
    Me. Controls.Add(tb(i))
Next
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 17:29

Эм.. Тебе не кажется, что ты пропустил создание TextBox'ов?
Код: Выделить всё
tb(i) = new TextBox() With { .Left = 8, .Top = 8 + 20*i }


А, ну да.. В твоём коде ещё и массив нулевой длины...
Последний раз редактировалось Qwertiy 20.09.2013 (Пт) 17:30, всего редактировалось 1 раз.

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 17:30

Сами эти поля мне нужны, по сути, только один раз - для задания стартовых и конечных адресов. Потом они уже не требуются, программа сама примет все их значения в переменные и будет с ними работать как заложено.

Ага, вот оно, то есть я не указал их позицию на форме, верно? Тогда тут возникнет еще один цикл, для того чтобы их сместить друг от друга... И проще это сделать через 2 переменные, как я предполагаю...
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 17:31

Не понимаю, на что это влияет.
И перечитай пост выше, я у тебя ещё что-то странное нашёл...

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 17:33

Qwertiy писал(а):Эм.. Тебе не кажется, что ты пропустил создание TextBox'ов?
Код: Выделить всё
tb(i) = new TextBox() With { .Left = 8, .Top = 8 + 20*i }


А, ну да.. В твоём коде ещё и массив нулевой длины...

Отлично, сейчас попробую все выстроить. Как получится, покажу результат. :D
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 17:34

insite2012 писал(а):Ага, вот оно, то есть я не указал их позицию на форме, верно?

Нет, если смотреть приведённый код. Ты не создал TextBox'ы. И даже массив нормальный не создал.

insite2012 писал(а):Тогда тут возникнет еще один цикл

Не думаю. Но зависит от того что ты хочешь получить.
Кстати, возможно тогда стоит задуматься о двумерном массиве.

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 17:50

Отлично, все получилось! Спасибо большое за подсказки!
Пока применил конструкцию на 8 полей, потом добавлю еще 8. Вот так вышло.
Код: Выделить всё
Public Sub Make_Text_Box()
        Dim tb() As TextBox = New TextBox(8) {}
        Dim i As Integer = 0
        For i = 0 To 7
            tb(i) = New TextBox() With {.Left = 8, .Top = 8 + 20 * i}
            Form1.Controls.Add(tb(i))
        Next
    End Sub
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 17:53

insite2012 писал(а):Отлично, все получилось! Спасибо большое за подсказки!

Пожалуйста :)
Только что-то мне подсказывает, что массив надо объявить на уровне формы, а не в процедуре ;)

insite2012 писал(а):
Код: Выделить всё
        Dim i As Integer = 0
        For i = 0 To 7

На всякий случай напоминаю, что можно писать
Код: Выделить всё
For i As Integer = 0 To 7
Тогда переменная будет видима только внутри цикла For.

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 18:23

Да, спасибо, я иногда так и делаю. Если я правильно понял. то после фигурных скобок я могу ставить все параметры TextBox-а, высоту, ширину и т.п. Правильно?
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 18:26

insite2012 писал(а):Если я правильно понял. то после фигурных скобок я могу ставить все параметры TextBox-а, высоту, ширину и т.п. Правильно?

Да, но только присваивать свойства первого уровня и только один раз. Это отличие такой инициализации от нормального блока With.

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 18:30

Понял. Вот окончательный вариант, для двух блоков.
Код: Выделить всё
Public Sub Make_Start_Text_Box()
        Dim tb_start() As TextBox = New TextBox(8) {}
        For i As Integer = 0 To 7
            tb_start(i) = New TextBox() With {.Left = 10, .Top = 40 + 20 * i, .Width = 30, .Height = 10}
            Form1.Controls.Add(tb_start(i))
        Next
    End Sub

    Public Sub Make_End_Text_Box()
        Dim tb_end() As TextBox = New TextBox(8) {}
        For i As Integer = 0 To 7
            tb_end(i) = New TextBox() With {.Left = 60, .Top = 40 + 20 * i, .Width = 30, .Height = 10}
            Form1.Controls.Add(tb_end(i))
        Next

    End Sub


И еще вопрос, в такой конструкции я могу объявить эти поля как With Events?
Dulce et decorum est pro patria mori

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.09.2013 (Пт) 18:40

insite2012 писал(а):И еще вопрос, в такой конструкции я могу объявить эти поля как With Events?

Нет, но обработчики событий повесить и использовать можешь.

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 18:48

Понял, спасибо.
Dulce et decorum est pro patria mori

insite2012
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.03.2013 (Пт) 8:06
Откуда: Россия, Саратов

Re: Сделать модуль стартовым объектом в WinForms приложении

Сообщение insite2012 » 20.09.2013 (Пт) 19:24

Qwertiy писал(а):
insite2012 писал(а):Отлично, все получилось! Спасибо большое за подсказки!

Пожалуйста :)
Только что-то мне подсказывает, что массив надо объявить на уровне формы, а не в процедуре ;)

insite2012 писал(а):
Код: Выделить всё
        Dim i As Integer = 0
        For i = 0 To 7

На всякий случай напоминаю, что можно писать
Код: Выделить всё
For i As Integer = 0 To 7
Тогда переменная будет видима только внутри цикла For.

Согласен, и тут вы правы))) Я так потом и сделал, когда увидел, что не могу обратиться к полям из других процедур. :D
Dulce et decorum est pro patria mori


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

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

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

    TopList