Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
badmoon
0 / 0 / 0
Регистрация: 27.12.2016
Сообщений: 2
1

Отсутствует программно созданная форма в списке Application.Openforms

27.12.2016, 15:36. Просмотров 223. Ответов 2
Метки нет (Все метки)

Здравствуйте!

В процессе выполнения программы на VB.Net создаю форму со свойством ShowItTaskBar = False. Затем пытаюсь заблокировать ее повторное создание поиском ее в Application.Openforms. А ее там нет!
Кто-нибудь сталкивался с подобным? На одном иностранном форуме обнаружил схожую тему, но результата исправления такого косяка не нашел.

Добавлено через 3 часа 8 минут
Если интересно, решил проблему костылями: добавил boolean переменную, проверяя которую программа выходит из процедуры создания формы. Она же сбрасывается, когда это необходимо, после чего процедура создания формы срабатывает.
Однако это кривое исполнение, поэтому оно приемлемо для маленького проекта или проекта с небольшим количеством подобных ситуаций. Если Вы знаете более универсальное решение, напишите, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2016, 15:36
Ответы с готовыми решениями:

Как перевести Console Application в Windows Application
Imports System.Console Module Module1 Sub Main() Dim S() As...

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

Application.OpenForms сокращение
Дорогие программисты нужна помощь в сокращение и оптимизации кода есть такое...

Application.OpenForms и ООП
Буквально на этой неделе узнал про такую конструкцию, которая позволяет...

Как добавить форму в коллекцию Application.OpenForms?
Друзья добрый день. Использую такой метод: private void button1_Click(object...

2
MrCrown
823 / 799 / 195
Регистрация: 03.10.2012
Сообщений: 828
28.12.2016, 12:41 2
Цитата Сообщение от badmoon Посмотреть сообщение
А ее там нет!
Возможно, вы не присвоили новой форме имя

vb.net
1
2
3
4
5
6
7
8
Dim f As New Form
        f.Name = "NewForm"
        f.ShowInTaskbar = False
        f.Show()
        MsgBox(Application.OpenForms.Count)
        For Each frm As Form In Application.OpenForms
            MsgBox(frm.Name)
        Next
1
badmoon
0 / 0 / 0
Регистрация: 27.12.2016
Сообщений: 2
28.12.2016, 15:30  [ТС] 3
Спасибо!
Невероятно, что такая ерунда оказалась ответом. Я практически никогда не называю динамические объекты, особенно формы, и все прекрасно работает. В моей программе есть еще 2 формы, без имени, но в таксбаре они видны. И в списке форм они тоже есть.

Добавлено через 2 часа 21 минуту
Похоже, я поспешил с выводами.
Создаю форму следующей строкой:

vb.net
1
Dim myForm As New Form With {.Name = "myForm", .TopMost = True, .WindowState = FormWindowState.Normal, .StartPosition = FormStartPosition.Manual, .Visible = True, .FormBorderStyle = Windows.Forms.FormBorderStyle.None, .MinimizeBox = False, .MaximizeBox = False, .ShowInTaskbar = False, .BackColor = Color.Yellow}
Ее нет в Application.OpenForms.

Добавлено через 7 минут
Разобрался. Почему-то весь этот набор свойств конфликтует с .Visible = True. Убрал - форма появилась.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2016, 15:30

Программно созданная таблица в datagridview
И так я создал программно таблицу в datagridview теперь вопрос как перевести...

Не работает кнопка, созданная программно
Всем привет. Недавно начал изучать javascript. Работаю c API Яндекс Карт. Они...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru