Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Tolias28
206 / 126 / 8
Регистрация: 18.08.2010
Сообщений: 1,016
1

Активировать форму после клика по ссылке в LinkLabel

03.07.2013, 17:40. Просмотров 1226. Ответов 6
Метки нет (Все метки)

Я хочу реализовать LinkLabel так, чтобы при нажатии на него средней кнопкой мыши происходило открытие ссылки в браузере, после чего чтобы сразу же форма с LinkLabel обратно автоматически активировалась. Для этого был написан код ниже. Но это не работает. После нажатия на среднюю кнопку мыши на ссылке ссылка открывается в браузере, но после этого форма не активируется. Почему? И как это исправить?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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.TopMost = true;
                    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();
                //this.BringToFront();
                this.TopMost = false;
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 17:40
Ответы с готовыми решениями:

Подписать на событие клика динамически созданный LinkLabel
Привет всем! такая проблема возникло.. есть множество linklebe которые я...

Открыть через linkLabel другую форму
Здравствуйте, помогите, как реализовать следующее: есть ссылка private...

Нужен массив элементов linkLabel, каждый элемент которого будет массивом linkLabel-ов
Сломал себе мозг, пока пытался сформулировать то, что мне нужно. Программа...

Как активировать форму
Проблема такая: Есть Form 1 на которой есть кнопочка вызывающая форму с...

В отдельном потоке создать дочернюю форму, которую можно было бы активировать когда главная форма занята
Дано: Основная форма, длительный рассчёт. Задача: показать progressbar, но...

6
grom_oleg
21 / 21 / 7
Регистрация: 24.01.2013
Сообщений: 129
06.07.2013, 21:10 2
Возможно, попробовать
C#
1
Show()
?
1
Tolias28
206 / 126 / 8
Регистрация: 18.08.2010
Сообщений: 1,016
09.07.2013, 18:58  [ТС] 3
Спасибо, что хоть один человек ответил на мою проблему
К сожалению, с Show это тоже не работает. Форма показывается, но она остается не активной...
0
grom_oleg
21 / 21 / 7
Регистрация: 24.01.2013
Сообщений: 129
09.07.2013, 22:06 4
Цитата Сообщение от Tolias28 Посмотреть сообщение
Спасибо, что хоть один человек ответил на мою проблему
К сожалению, с Show это тоже не работает. Форма показывается, но она остается не активной...
У меня получилось!
Оказывается, все предельно просто:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace Activated
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.linkLabel1.Text = "https://www.google.com.ua/";
        }
 
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(this.linkLabel1.Text);
            Show();
        }
 
        private void Form1_Deactivate(object sender, EventArgs e)
        {
            Activate();
        }
    }
}
Кстати, я тоже из Украины)
1
Tolias28
206 / 126 / 8
Регистрация: 18.08.2010
Сообщений: 1,016
09.07.2013, 22:47  [ТС] 5
Цитата Сообщение от grom_oleg Посмотреть сообщение
У меня получилось!
Спасибо. Ваш метод действительно заработал! Но лишь на двух браузерах На Google Chrome и Mozilla Firefox этот метод работает прекрасно. Но если браузер был свернут в панель задач, то после клика по ссылке страница в браузере открывается, но форма не активируется...

А на Opera и Internet Explorer этот метод вообще не пашет ни так ни так=(
0
grom_oleg
21 / 21 / 7
Регистрация: 24.01.2013
Сообщений: 129
10.07.2013, 19:18 6
Цитата Сообщение от Tolias28 Посмотреть сообщение
Спасибо. Ваш метод действительно заработал! Но лишь на двух браузерах На Google Chrome и Mozilla Firefox этот метод работает прекрасно. Но если браузер был свернут в панель задач, то после клика по ссылке страница в браузере открывается, но форма не активируется...

А на Opera и Internet Explorer этот метод вообще не пашет ни так ни так=(
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace Activated
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.linkLabel1.Text = "https://www.google.com.ua/";
        }
 
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(this.linkLabel1.Text);
            TopMost = true;
            Activate();//Необязательная строка
        }
 
        private void Form1_Deactivate(object sender, EventArgs e)
        {
            Activate();
        }
    }
}
Немного изменил - работает на хром, опера и ослике (при свернутом браузере тоже работает)
Остальные не проверял
0
Tolias28
206 / 126 / 8
Регистрация: 18.08.2010
Сообщений: 1,016
10.07.2013, 19:29  [ТС] 7
да нет, это не то. Вы просто сделали форму TopMost=true. Но сам фокус то теряется и остается на браузере, хоть и форма с самого верху перед глазами. Да и к тому же, может не нужно от программы, чтобы форма всегда была сверху.
0
10.07.2013, 19:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2013, 19:29

Активировать приложение после завершения долгого метода
Добрый день! Есть метод, который долго работает через BackGroundWorker. В...

Сделать кнопку не активной, и после цикла активировать
Как можно правильно сделать кнопку не активной, и после цикла активировать?...

После клика программа зависает
private void textBox1_TextChanged(object sender, EventArgs e) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru