Управление одной формой, которая открывается несколько раз - PullRequest
0 голосов
/ 19 декабря 2018

Допустим, у меня одна и та же форма открыта несколько раз , но я хочу контролировать только одну из них ( ту, которая имеет "привет" в качестве заголовка окна (текст) <- для идентификации) </p>

Как мне это удается?

РЕДАКТИРОВАТЬ: Вот пример того, что я хочу сделать (это немного сложно, я не очень хорошо объясняю, что я хочу)

private void openthesecformfirst_Click(object sender, EventArgs e)
{
    Form2 sec = new Form2();
    sec.Text = "Hi";
    sec.Show();
    //The second form is now opened
}

private void openthesecformsecond_Click(object sender, EventArgs e)
{
    Form2 sec = new Form2();
    sec.Text = "Hello";
    sec.Show();
    //the second form is now opened twice
}

private void changelabelinfirst_Click(object sender, EventArgs e)
{
    //Identified by the title the first opened form2 is supposed to change a label text

    //How do I get this one specifically?
}

private void changelabelinsecond_Click(object sender, EventArgs e)
{
    //Identified by the title the second opened form2 is supposed to change a label text

    //How do I get this one specifically?
}

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Для окна поиска в ОС Windows вы можете использовать FindWindowEx из Win32 Api, например:

  1. Поскольку это оригинальный небезопасный код, вам следует импортировать функции из user32.dll:

    [DllImport("user32.dll", SetLastError = true)] static extern IntPtr 
    FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, 
    string lpszClass, string lpszWindow);
    
    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr 
    childAfter, 
    string className,  string windowTitle);
    
  2. После импорта вы можете использовать такую ​​функцию:

     var CaptionTextForLooking = "hello"; // or "Hi"
    
     var foundWindowPtr = 
     FindWindowEx(IntPtr.Zero,IntPtr.Zero,CaptionTextForLooking 
     ,IntPtr.Zero);
    

Подробнее вы можете найти здесь

0 голосов
/ 19 декабря 2018

Вы можете использовать свойство Application.OpenForms .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...