Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматическое сокращение строки с путем, Кроме AutoEllipsis 
V
    Опции темы
opozdaika
Дата 29.7.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 28.4.2008

Репутация: нет
Всего: нет



Когда-то в Дельфи меня радовала возможность (не помню подробностей) автоматического сокращения длинной строки, содержащей путь к файлу, при ее отображении на форме. Не могу найти такое в C#. А именно: на форме есть label. В нее нужно вывести длииииииииинный пуууууть, а места, как всегда, мало. У label есть свойство AutoEllipsis, но оно не заточено под пути: ставит многоточие всегда В КОНЦЕ строки.
Фишка в том, что путь принято сокращать так, чтобы многоточие было В СЕРЕДИНЕ пути, а не в конце, чтобы бьло полностью видно ИМЯ файла. 
Например, вместо
Код

C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\bin\readme.txt

дельфийская приблуда сделала бы что-то типа:
Код

C:\...\bin\readme.txt

Есть ли такое в C#?

PM MAIL   Вверх
Necias
Дата 29.7.2008, 18:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 7.4.2006

Репутация: нет
Всего: 2



К сожалению, непосредственно такой функции я не нашел. Пришлось идти в обход))
Создай Windows Application, кинь label (имя стандартное - label1), AutoSize = false, Text = "" (обязательно, текст будет прорисовываться вручную). На событие label'a Paint вставь код
Код

            Brush brush = new SolidBrush(label1.ForeColor);
            float cyText = Font.GetHeight(e.Graphics);
            float cyRect = cyText;
            RectangleF rectf = new RectangleF(0, 0, label1.Width, cyRect);
            string str = "C:\grg\rgrg\rgrh\rhrh\rhrh.h";
            StringFormat strfmt = new StringFormat();


            strfmt.Trimming = StringTrimming.EllipsisPath;
            e.Graphics.DrawString(str,
                            Font, brush, rectf, strfmt);

Ключевой параметр - StringFormat.Trimming - при рисовании текст будет обработан и из СЕРЕДИНЫ будут выкинуты непомещающиеся символы
PS Извини, писал наспех, если что непонятно отпишись - как освобожусь кину подробный пример

Это сообщение отредактировал(а) Necias - 29.7.2008, 18:55
PM MAIL ICQ   Вверх
opozdaika
Дата 30.7.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 28.4.2008

Репутация: нет
Всего: нет



Necias, у меня все получилось, спасибо!!!  smile  smile  smile 
Жаль, не могу сделать тебе +1 по причине своего низкого статуса. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.