Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Создание многострочного текстового поля на Си Шарп Добавлено: 15.03.06 20:26  

Автор вопроса:  Wowan
Нужно текстовое:рисуем квадратик и пишем текст внутри использовал DrawString и каретку из user32.dll довольно муторно может есть другие подходы к этой проблеме? Прошу ответить любого прочитавшего.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 16.03.06 04:39
Хм... сначала прочитал ник как "Woman"...


Для начала хотелось бы услышать от автора список причин, по которым не подходит TextBox.

Ответить

Номер ответа: 2
Автор ответа:
 Wowan



Вопросов: 8
Ответов: 13
 Профиль | | #2 Добавлено: 16.03.06 08:18
я делаю что-то типа редактора блок схем с графикой я разобрался, а вот с вводом текста в фигуры пока ещё нет.
НЕ знаю как лучше подойти к решению этого вопроса

Ответить

Номер ответа: 3
Автор ответа:
 Wowan



Вопросов: 8
Ответов: 13
 Профиль | | #3 Добавлено: 16.03.06 08:18
я делаю что-то типа редактора блок схем с графикой я разобрался, а вот с вводом текста в фигуры пока ещё нет.
НЕ знаю как лучше подойти к решению этого вопроса

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 16.03.06 14:07
По клику создавай текстбокс, а по нажатию Энтера в нем удаляй его (или перемещай) и создавай на том месте лабел.

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 16.03.06 22:50
Если это блок-схемы,то мне кажется проще и красивее было бы сделать свой контрол. Отрисовать нужную границу (ромбик,квадрат,эллипс.. и т.д.. ) и отлавливать нажатые клавиши и загонять в твою фигуру в виде текста. Если фигура прямоуголник,то можно обойтись стандартным DrawString, усли же нет, то тут придется через Region работать..

Ответить

Номер ответа: 6
Автор ответа:
 Wowan



Вопросов: 8
Ответов: 13
 Профиль | | #6 Добавлено: 17.03.06 08:50
 в вопросе "MeasureString и DrawString(..rect)" ты мне
задаёшь вопрос почему я не использую стандартнвый контрол
,а здесь приглаешь наоьорот не использовать его?
Что же мне делать? Кстати так как ты мне предложил я уже сделал но это несколько глючит, я создал класс Caret
используя User32.dll. С текстом проблем почти нет но вот
Например :string text="nnnnnn n"......
          ;DrawString(...rect(40,100));
Выдаст: nnnnnn
          n
Хотя я думал что
должно быть так:nnnnnn
                     n

Или всё нормально, подскажите please.

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 17.03.06 22:39
Слушай, а зачем ты вообще заморочился с отрисовкой текста через GDI? Зачем так все усложнять? Как мне кажется,тут вообще можно упростить все.. и сделать это следующим образом:

1.Создаешь свой UserControl
-кладешь на него TextBox,Label (Visible=False,Border=None,Multiline=True,Font,WordWrap=по вкусу и т.д)
-устанавливаешь бит стиля ControlStyles.Selectable(чтобы контрол имел возможность получать фокус)

2. Через GDI отрисовываешь нужный тебе Border (прямоугольник,ромб,эллипс и т.д... т.е. нужную тебе фигуру
-Используя Drawing2D.DashStyle.Dot можешь даже отрисовать стндартную рамку при получении фокуса (ну так.. для крутизны! :-)) )

3.Пользуешься советом Sharp'a, а именно:
-при получении фокуса показываешь юзеру имеющийся у тебя TextBox, но показываешь его таким образом,чтобы он был вписан в твою фигуру,т.е. ручками задаешь положение и размеры относительно размеров и границ твоей фигуры (чтобы выглядело эстетично)
-При потере фокуса прячешь TextBox и показываешь Label с тем же текстом,размерами и положением..

Вот, собственно, и все.. Минимум усилий, и красивый результат..

Ответить

Номер ответа: 8
Автор ответа:
 Wowan



Вопросов: 8
Ответов: 13
 Профиль | | #8 Добавлено: 17.03.06 23:26
Спасибо вам конечно большое что вы с нами возитесь без вас не знаю что бы и намудрил. А так всё получилось довольно таки красиво и функционально. За 2 вечера сделал то что нужно.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам