Я могу передать аргументы в мое приложение при запуске, которое прекрасно работает! Я также могу остановить запуск нескольких экземпляров приложения, и это здорово. Однако я пытаюсь передать аргумент в приложение, но если приложение уже запущено, запустите метод на существующей winform, вместо того, чтобы пытаться открыть новый экземпляр. Я пытался использовать application.openforms, и он не работает для меня.
Я пытался использовать код, подобный следующему:
if (System.Windows.Forms.Application.OpenForms["MainMenu"] != null)
{
(System.Windows.Forms.Application.OpenForms["MainMenu"] as Form1).Output();
}
Program.cs
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
{
MessageBox.Show("BorisCRM is already running. Only one instance of this application is allowed");
}
else
{
if (args.Length > 0)
Application.Run(new Forms.MainMenu(args[0]));
else
Application.Run(new Forms.MainMenu("NoArg"));
}
}
MainMenu Form:
if (s != "NoArg")
{
NewForm frm = new NewForm(getclient);
frm.MdiParent = this;
frm.Show();
}
ЭТО РАБОТАЕТ .... открыть приложение - открывает форму меню, где я могу выбрать пункты меню, которые открывают формы, используя меню в качестве mdiparent.
ЭТО РАБОТАЕТ .... открыть приложение с аргументом -открывает форму меню и автоматически открывает другую форму, используя меню в качестве родительского mdi.
ЭТО НЕ РАБОТАЕТ ... открыть приложение с аргументом (если приложение уже запущено) - существующая форма меню автоматически открывает другую формуиспользуя меню в качестве родительского mdi.