Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск WinForms App через sub main() / 6 сообщений из 6, страница 1 из 1
11.09.2013, 19:08
    #38394064
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск WinForms App через sub main()
В 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
11.09.2013, 21:34
    #38394130
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск WinForms App через sub main()
Дмитрий77,

так там где у тебя Form1.Show() - должно быть что-то вроде App.Run(new Form1()), не?
...
Рейтинг: 0 / 0
12.09.2013, 08:07
    #38394248
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск WinForms App через sub main()
Код: 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
12.09.2013, 21:09
    #38395272
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск WinForms App через sub main()
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
14.09.2013, 11:06
    #38396632
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск WinForms App через sub main()
Первое что надо сделать выкинуть весь код VB6 и писать заново. Да и нах VB.NET пиши на C# как все нормальные пасаны.
...
Рейтинг: 0 / 0
15.09.2013, 01:26
    #38396907
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск WinForms App через sub main()
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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск WinForms App через sub main() / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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