Простой пользовательский интерфейс в winforms - PullRequest
3 голосов
/ 28 сентября 2010

У меня есть простое приложение winforms, при выполнении операций оно каждый раз показывает дочернее окно. Если я открою окно браузера (полностью развернуто) или какое-то другое окно, как обычно приложение возвращается со своим дочерним окном, при нажатии на исполняемый файл, который находится на панели задач только дочернее окно становится видимым, но окно приложения не появляется. Я хочу знать, как показать оба окна, когда я выбираю его на панели задач.

childwindow - также winform, свойство toplevel которого установлено в true, кроме него ничего новый (просто щелкнув по кнопке или ячейке в сетке, я создаю объект для формы и использую его, чтобы показать))

 AlertMsgWindow _alertMsg;
    void dataGridViewAlerts_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        try
        {
            if (!string.IsNullOrEmpty(this.dataGridViewAlerts.getValue(0, this.dataGridViewAlerts.SelectedRow)))
            {
                this.dataGridViewAlerts.setCellImage(0, this.dataGridViewAlerts.SelectedRow, "NewsIconRead");

                if (_alertMsg == null || _alertMsg.IsDisposed)
                {
                    if (_alertMsg != null)
                    {
                        _alertMsg.onDeleteMessageRequest -= new DeleteMessage(_alertMsg_onDeleteMessageRequest);
                        _alertMsg.Dispose();
                    }
                    _alertMsg = new AlertMsgWindow();
                    _alertMsg.onDeleteMessageRequest += new DeleteMessage(_alertMsg_onDeleteMessageRequest);                       
                }

                _alertMsg.FillDetails(alertDetails[IDcollection[this.dataGridViewAlerts.SelectedRow]]);
                if (!_alertMsg.Visible)
                {                        
                    _alertMsg.Location = PointToScreen(new Point(this.Width / 4, -this.Height));                        
                    _alertMsg.Show(this);
                }

                if (onReadMessageReq != null)
                    onReadMessageReq(IDcollection[this.dataGridViewAlerts.SelectedRow]);
            }
        }
        catch (Exception)
        { }
    }              

Примечание: ЭТО ПРОИСХОДИТ ТОЛЬКО В WINDOWS2000

Я использовал компонент с именем Dotnetmagic.dll, я не знаю, вызывает ли он проблему. Может кто-нибудь помочь мне решить эту проблему

1 Ответ

1 голос
/ 29 сентября 2010
I replaced these lines 

_alertMsg.Location = PointToScreen (новая точка (это. Ширина / 4, -эта. Высота));
С

_alertMsg.Left = x; _alertMsg.Top = y;

и это решило мою проблему

...