Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Подскажите, как в окне создать ссылку на файл, расположенный на локальном компе? Примерно, такую, как на рисунке. Хотел использовать это, но в версии .Net Franework 4.7 и выше этот проект уже не работает, как положено.

Есть ли другие варианты?

К сообщению приложен файл. Размер - 4Kb
13 авг 18, 11:14    [21640064]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
BlackEric
Member

Откуда:
Сообщений: 747
vlsaf,

Компонент какой используется для отображения текста со ссылкой?

Вот решение для RichTextBox
13 авг 18, 11:27    [21640081]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
vlsaf
расположенный на локальном компе?
Проблема создать текст со ссылкой? Или проблема в локальном файле?
13 авг 18, 11:37    [21640094]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
По идее можно разместить WPF-ный текст с любыми его возможностями через ElementHost, но лично я это этого не пробовал, не знаю, какие там могут быть грабли.
13 авг 18, 11:46    [21640104]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Обычный RichTextBox создает ссылки, начинающиеся на http://, ftp:// и др. стандартные URL адреса. Но нужно организовать ссылку на локальный файл, например на С:\docs\myDoc.txt

Как это сделать?

Проблема создать текст с такой ссылкой.
13 авг 18, 11:46    [21640107]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
vlsaf
ссылки, начинающиеся на http://, ftp:// и др.
а ссылку file:///С:/docs/myDoc.txt нельзя создать?
13 авг 18, 11:49    [21640111]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
vlsaf
Проблема создать текст с такой ссылкой.

Можно и в другой плоскости.
Проблема в клике обработчике на фразе.
Саму ссылку создать стилем синий.
13 авг 18, 12:06    [21640142]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Ссылку на файл создать можно. Но есть важный нюанс. Путь к файлу м.б. очень длинным. И этот путь надо как-то скрыть от глаз. И только по щелчку (событию LinkClicked) уметь этот путь вытаскивать. А сейчас это выглядит скверно:

К сообщению приложен файл. Размер - 1Kb
13 авг 18, 12:24    [21640184]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Должно быть так:
----
Файл
----
13 авг 18, 12:28    [21640194]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5090
WPF'ный AvalonEdit так может. Ссылка задается с помощью псевдоразметки а-ля bb-коды примерно вот в таком виде:

Это какой-то текст с файловой\r\nссылкой в тексте <file=- вот она>D:\\Trash\\1.txt</file>. И еще\r\nнемного текста.
Результат показан ниже. По клику на ссылку появляется MessageBox, в котором путь к файлу.

К сообщению приложен файл. Размер - 16Kb
13 авг 18, 18:12    [21640963]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Это уже похоже на правду )))
К WinForm сложно прикрутить?
Никогда еще WPF-ные контролы к WInForms не прикручивал.
OK. Спасибо! посмотрю...
14 авг 18, 10:54    [21641458]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4448
vlsaf, на винформс также есть ричтекстбокс.... и он также понимает формат rtf...
14 авг 18, 11:01    [21641476]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5090
Вообще, самый простой в данном случае способ, если текст нередактируемый (а как он может быть редактируемым при наличии таких ссылок?) - шлепнуть на форму WebBrowser, задать ему html со ссылками, и захэндлить у этих ссылок событие клика:
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
    webBrowser1.DocumentText = @"
      <p style='font-family: Verdana; font-size: 12px'>
        это какой-то текст
        <br/>
          с файловой
          <a href=""D:\Trash\1.txt"">ссылкой.</a>
        <br/>
        И еще текст
      </p>";
    webBrowser1.DocumentCompleted += (s, e) =>
    {
      foreach (var link in webBrowser1.Document.Links.Cast<HtmlElement>())
        link.Click += LinkClick;
    };
  }

  static void LinkClick(object sender, EventArgs ea)
  {
    if (!(sender is HtmlElement he)) return;
    MessageBox.Show(he.GetAttribute("href"));
  }
}

- будет ровно то же самое:

К сообщению приложен файл. Размер - 23Kb
14 авг 18, 11:50    [21641598]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20519
Сон Веры Павловны
самый простой
но и самый "тяжелый". Браузер грузится заметное время
14 авг 18, 12:01    [21641626]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Текст формируется по мере работы программы. Что-то типа протокола с активными ссылками. По мере работы программы кол-во строк нарастает и в конце получается текст, который нужно скроллить бегунком.

Вопрос в том, где проще формировать ссылки и можно ли по мере работы программы уходить в низ текста с тем, чтобы текст уходит как бы наверх. (автоскролл).
14 авг 18, 12:38    [21641720]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
vlsaf
Вопрос в том, где проще формировать ссылки
ну первый же вариант это richXXXXX компонент. Тебе же сказали.
vlsaf
чтобы текст уходит как бы наверх. (автоскролл).

С чего решил что это вообще проблема?
Не получилось что то?
Пора уже пробовать)).
14 авг 18, 13:49    [21641834]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5090
Еще достаточно несложный вариант - использовать WPF'ный RichTextBox с контентом в виде FlowDocument, внутри которого один параграф - просто в Inlines этого параграфа засовывать текст/ссылки/переводы строк. Тестовый проект в аттаче.
15 авг 18, 08:17    [21642531]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5090
Вот.

К сообщению приложен файл (wf-test2.7z - 7Kb) cкачать
15 авг 18, 08:17    [21642532]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Сон Веры Павловны, огромное спасибо. Особенно за работающий пример. Тут и использование ElementHost и WPF-ный RichTextBox и пример работы со ссылками.

Снимаю шляпу )))
15 авг 18, 08:36    [21642539]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3429
Вместо того, чтоб использовать тяжеловесный RTB имеет смысл использовать легковесный TextBlock, который так же предоставляет возможности форматирования :
<TextBlock>
	<Run Text="Send to"/>
	<Hyperlink NavigateUri ="mailto:roman@meytes.ru">
		<Run Text="Roman Meytes"/>
	</Hyperlink>
</TextBlock>
15 авг 18, 13:13    [21642939]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Roman Mejtes,
Ещё круче!
Мы забыли что wpf это html.
15 авг 18, 14:18    [21643112]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5090
Только в текстблоке, например, не получится выделить и скопировать текст. И если для копирования всего текста худо-бедно можно прикрутить кнопку, то с выделением-копированием части текста вообще ой. Ну, и еще придется немного поплясать со скроллингом вниз по мере добавления текста.
15 авг 18, 14:41    [21643173]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3429
Сон Веры Павловны
Только в текстблоке, например, не получится выделить и скопировать текст. И если для копирования всего текста худо-бедно можно прикрутить кнопку, то с выделением-копированием части текста вообще ой. Ну, и еще придется немного поплясать со скроллингом вниз по мере добавления текста.

плясать со скроллингом не надо, надо просто включить перенос текста в TextBlock и засунуть его в ScrollViewer. На счет выделения, автор такого требования не писал вроде. Если выделение не нужно, использовать RTB смысла не имеет, как мне кажется. Это всё равно, что стрелять из пушки по воробьям :)
15 авг 18, 14:52    [21643207]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Roman Mejtes
На счет выделения, автор такого требования не писал вроде.
Действительно не писал. Однако подразумевал )))
Работа в большой организации подразумевает пересылку части протокола коллегам.
Но я выражаю благодарность вам,Roman Mejtes, за хорошую идею. Наверняка в каких-то проектах можно будет ее использовать.
16 авг 18, 08:28    [21643948]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5090
vlsaf
Однако подразумевал

В таком случае, в том тестовом проекте, который я аттачил выше, вложенный приватный класс LinksView.LinkCommand надо сделать не вложенным и public, иначе, если в область копирования попадет гиперссылка, то при копировании вылетит ошибка о невозможности сериализации типа LinksView+LinkCommand.
16 авг 18, 10:06    [21644070]     Ответить | Цитировать Сообщить модератору
 Re: Как в окне создать ссылку на файл?  [new]
vlsaf
Member

Откуда:
Сообщений: 1367
Ага. Спасибо.
16 авг 18, 14:18    [21644523]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / WinForms, .Net Framework Ответить