Я хочу реализовать LinkLabel, чтобы при щелчке по ней средней кнопкой мыши было выполнено открытие ссылки в браузере, а затем форма с обратной связью LinkLabel автоматически активируется.Включить форму после нажима на ссылку средней кнопкой мыши
Для этого был написан код. Но это не работает. После нажатия средней кнопки мыши по ссылке ссылка открывается, но форма не активна. Зачем? И как это исправить?
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.linkLabel1.Text = "https://www.google.com.ua/";
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Middle)
{
if (!this.IsDisposed && !this.Disposing)
{
this.Deactivate += new EventHandler(Form1_Deactivate);
}
}
System.Diagnostics.Process.Start(this.linkLabel1.Text);
}
private void Form1_Deactivate(object sender, EventArgs e)
{
if (!this.IsDisposed && !this.Disposing)
{
this.Deactivate -= new EventHandler(Form1_Deactivate);
this.Activate();
}
}
}
}
Отредактировано: После ответа @King король, я обнаружил, что эта проблема возникает только в браузере Opera. В Firefox и Google Chrome его решение (со спящим потоком на 500 мс) и мое решение (какой код выше) отлично работают, если Firefox/Google Chrome не работает или не сведен к минимуму. Если Firefox/Google Chrome сведен к минимуму и нажмите ссылку LinkLabel в моей форме, браузер разворачивается, но после этого форма не активируется.
Подводя итог: к сожалению, кросс-браузерные решения еще не достигнуты ... Firefox и Google Chrome не работают, если они сведены к минимуму. И Opera в целом сопротивляется, как может, перехват активного плана.
Я знаю, что решение этой проблемы существует. Например, в IM-клиенте QIP реализовано, которое я хочу реализовать. И там, после нажатия на ссылку окна фокус восстанавливается независимо от браузера.
См http://stackoverflow.com/questions/878429/activate-existing-browser-window-with-given-url- from-c-sharp-application-withou – PiLHA
Я думаю, вы имели в виду '.BringToFront()' вместо '.Activate()'? –
@PiLHA В теме, которую вы предложили, вообще рассматривается, это еще одна проблема, которая мне не нужна. И нет решения для моей проблемы ... –