powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск WinForms App через sub main()
6 сообщений из 6, страница 1 из 1
Запуск WinForms App через sub main()
    #38394064
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VB6 обычно загружаю "Form1" из main(), например
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Main()
  If InStr(Command, "/quit") > 0 Then 'закрывает запущенный экз. и выходит
...
  App.HelpFile = App.Path & "\" & "proga.chm"
 ... 
  LoadIniSettings
  GetReestrValues 'получаем значения из реестра
...т.д т.п
  Form1.Show



.NET так сделать в лоб не дает...

Как поступить?
Лепить все "предварительные действия" в Form1_Load?
Или таки искать решение через main()? Если второе, то как?
...
Рейтинг: 0 / 0
Запуск WinForms App через sub main()
    #38394130
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

так там где у тебя Form1.Show() - должно быть что-то вроде App.Run(new Form1()), не?
...
Рейтинг: 0 / 0
Запуск WinForms App через sub main()
    #38394248
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Module StartModule
    Public Sub Main()
        Dim frm As New Form1()

        frm.ShowDialog()

        'а если
        'frm.Show(), то Main продолжится и приложение завершится

        'или использовать Application.Run
        'frm.Show()
        'Application.Run(frm)
    End Sub
End Module
...
Рейтинг: 0 / 0
Запуск WinForms App через sub main()
    #38395272
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa,
> 'а если
> 'frm.Show(), то Main продолжится и приложение завершится
это уже видел

Что-то как-то мрачно это делается.


Я вот эту тему читал:
Вопрос про Sub Main () при переходе с VB6 на VB2005.
Если я правильно понял, то Win.Forms вообще с main() начинать неправильно, а надо
делать Form1(основная форма)=объект автозапуска.

Ну, CommonControls стили подключать ручками не надо,
галка "Не запускать более одного экземпляра программы" есть в свойствах проекта.

Что еще?
Приконнектиться к БД и прочитать настройки из ini-файла(или реестра) можно в начале Form_Load.

Т.е так понимаю, от стереотипа шаблона с main() правильнее отказаться, ДА?

Надо просто понять, что я теряю при отсутвии main()

А вот как например сделать ключ /quit (выход)?
Код VB6:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub Main()

  Dim hwndTarget As Long 'hwnd окна PrevInstance

  If InStr(Command, "/quit") > 0 Then 'закрывает Proga и выходит
    Dim Start_Time As Date
    Do
      hwndTarget = FindMyWindow(0) 'PROGA_TITLE
      If hwndTarget = 0 Then Exit Do
      PostMessage hwndTarget, WS_CANCELMODE, 0, 0&
      PostMessage hwndTarget, WM_CLOSE, 0, 0&
      DoEvents
      'страховка-не закрылось почему-то более 10 сек -забиваем
      Start_Time = Now()
      Do
        DoEvents
        If IsWindow(hwndTarget) = 0 Then Exit Do
        If Format(Now - Start_Time, "ss") > 10 Then
          Exit Sub
        End If
      Loop
    Loop
    Exit Sub
  End If
...
Рейтинг: 0 / 0
Запуск WinForms App через sub main()
    #38396632
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое что надо сделать выкинуть весь код VB6 и писать заново. Да и нах VB.NET пиши на C# как все нормальные пасаны.
...
Рейтинг: 0 / 0
Запуск WinForms App через sub main()
    #38396907
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransaПервое что надо сделать ... писать заново..
Ты не поверишь, именно этим и занимаюсь. Даже не пытался конвертировать проект, который "переписываю заново" (цель - набить руку).

Но заметь, у меня есть очень много наработок которые сильно выходят за рамки VB6 и к языку как к таковому отношения особо не имеют. И "по-пацански" ряд этих вопросов боюсь не решить, пофиг VB.NET или C# (принципиальной разницы нет).
Хотя я и согласен, что на .NET многие вещи делаются без API проще и быстрее средствами .NET, и если б я на это не закладывался, я бы сказал что это дурь и дурью сейчас бы не маялся.

Впрочем, ответь мне на вопрос в соседнем топике про стиль "Communication" средствами .NET (да неважно "Media", "Help"... -названия системных стилей).
Ответ "это можно нарисовать" не принимается.
(и уверяю тебя, рисовать аккуратно и точно будешь долго, видел я такие .NET-овские коды).

Смотри, подсказываю идею,
SetWindowTheme(API) к ToolStrip не применишь, он не "Common Controls".
НО я допускаю что этот стиль как-то можно "вытащить" (в том числе средствами .Net) и применить к любому контролу, например к ToolStrip (Background, TextColor), да хоть к Picturebox.
Сюда глянь для затравки, чтоб понять мою идею, хотя это не совсем то.
Как правильно применить стиль к контролу (Parts and States)
Сумеешь?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск WinForms App через sub main()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]