Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2011, 21:26   #1
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию RichTextBox + определение ссылки по правой кнопке

Добрый день
Имеется RichTextBox и ссылки в нём. По левой кнопке мыши они открываются в браузере - с этим проблем нет, обрабатывается событие LinkClicked и всё супер. Но как организовать копирование этой ссылки по правой кнопке? То есть по щелчку правой кнопкой в какую-нибудь строковую переменную класть текст ссылки и уже дальше вызывать контекстное меню? Для LinkClicked есть класс LinkClickedEventArgs, который и предоставляет LinkText.. Но в остальных обработчиках такого нет.
Заранее спасибо!
andrew_jr20 вне форума Ответить с цитированием
Старый 28.08.2011, 23:16   #2
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

Цитата:
Сообщение от andrew_jr20 Посмотреть сообщение
Добрый день
Имеется RichTextBox и ссылки в нём. По левой кнопке мыши они открываются в браузере - с этим проблем нет, обрабатывается событие LinkClicked и всё супер. Но как организовать копирование этой ссылки по правой кнопке? То есть по щелчку правой кнопкой в какую-нибудь строковую переменную класть текст ссылки и уже дальше вызывать контекстное меню? Для LinkClicked есть класс LinkClickedEventArgs, который и предоставляет LinkText.. Но в остальных обработчиках такого нет.
Заранее спасибо!
можно так:
Код:
private readonly int MOUSEEVENTF_LEFTDOWN = 0x2;
        private readonly int MOUSEEVENTF_LEFTUP = 0x4;
        [DllImport("user32.dll")]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
        private bool RightClick = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN, e.X * 65536 / Screen.PrimaryScreen.Bounds.Width, e.Y * 65536 / Screen.PrimaryScreen.Bounds.Height, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, e.X * 65536 / Screen.PrimaryScreen.Bounds.Width, e.Y * 65536 / Screen.PrimaryScreen.Bounds.Height, 0, 0);
                RightClick = true;
            }
        }

        private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            if (RightClick)
            {
                string s = e.LinkText;
                RightClick = false;
                MessageBox.Show(s);
            }
            else
            {
                System.Diagnostics.Process.Start(e.LinkText);
            }
        }
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 29.08.2011, 15:14   #3
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию

Спасибо Напильничком прошёлся - и теперь отлично работает
andrew_jr20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
richtextbox Рыжик чик чик Microsoft Office Word 1 04.05.2011 11:30
Ссылки в RichTextBox The Best Общие вопросы .NET 6 17.02.2010 00:51
richTextBox Cpluser Общие вопросы .NET 3 28.04.2009 02:39
richtextbox sergei64_89 Общие вопросы .NET 1 08.12.2008 13:53
MouseDown: обращение к правой кнопке мыши ZhekON Общие вопросы Delphi 2 11.05.2007 19:17