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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поставить каретку в заданную позицию, RichTextBox/VC#.NET 
:(
    Опции темы
neutrino
Дата 24.4.2003, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif
A это мой код. Такие же проблемы.
Цитата

  int Rows = MyTextBox.GetLineFromCharIndex(MyTextBox.SelectionStart);
  int Cols = MyTextBox.SelectionStart;
  Point P=MyTextBox.GetPositionFromCharIndex(Cols);
  Cols-=MyTextBox.GetCharIndexFromPosition(new Point(0, P.Y));
  statusBar.Panels[0].Text = "Col: " + (Cols+1).ToString();
  statusBar.Panels[1].Text = "Row: " + (Rows+1).ToString();



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 24.4.2003, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



На самом деле глюк только один - это когда коретка в конце всего текста стоит. Причем только в пустой строке. То есть если вы набрали текст и нажали "Ввод".


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Alex101
Дата 24.4.2003, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

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



Там надо события еще обработать - KeyPress и ... что-то еще, что позволило бы отследить, что на этой строке мы больше ничего не напишем, хотя бы сравнить GetPositionFromCharIndex с шириной контрола.
Допиши уж, я на работе засиделся, кушать хочется smile.gifsmile.gifsmile.gif


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Alex101
Дата 24.4.2003, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

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



Цитата(neutrino @ 24.4.2003, 14:46)
На самом деле глюк только один - это когда коретка в конце всего текста стоит. Причем только в пустой строке. То есть если вы набрали текст и нажали "Ввод".

Нет, если в начале строки, то выдает "1", также как и второй символ в строке.


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
neutrino
Дата 24.4.2003, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Во как! Все пашет!!! Ура! Несколько подругому, правда... Без событий, но работает!
Цитата

  int I, SLen=0;
  System.Drawing.Graphics G = MyTextBox.CreateGraphics();
  int Rows = MyTextBox.GetLineFromCharIndex(MyTextBox.SelectionStart);
  int Cols = MyTextBox.SelectionStart;
  for (I=0;I<MyTextBox.Lines.GetLength(0); I++)
  {
    SLen+=MyTextBox.Lines[I].Length+1;
    if (SLen>Cols)
    {
    break;
    }
  }
  if ((I==MyTextBox.Lines.GetLength(0)-1)&&(MyTextBox.Lines[I]=="")) Cols=0;
  else
  {
    Point P=MyTextBox.GetPositionFromCharIndex(Cols);
    Cols-=MyTextBox.GetCharIndexFromPosition(new Point(0, P.Y));
  }
  statusBar.Panels[0].Text = "Col: " + (Cols+1).ToString();
  statusBar.Panels[1].Text = "Row: " + (Rows+1).ToString();



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 24.4.2003, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(Alex101 @ 24.4.2003, 16:55)
Нет, если в начале строки, то выдает "1", также как и второй символ в строке.

Нет, у меня тот способ нормально работал (в таком случае).


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 24.4.2003, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



А это для обшего случая. Антон, запости пожалуйста в заметки, а то как-то неудобно...

Цитата

RichTextBox MyTextBox;

void main()
{
    MyTextBox = new RichTextBox();
    MyTextBox.Parent = Form1;
    MyTextBox.Dock = DockStyle.Fill;
    MyTextBox.SelectionChanged += new EventHandler(this.CaretMoved);
}

void CaretMoved(object sender, EventArgs e)
{
    int SLen=0;
    System.Drawing.Graphics G = MyTextBox.CreateGraphics();
    int Rows = MyTextBox.GetLineFromCharIndex(MyTextBox.SelectionStart);
    int Cols = MyTextBox.SelectionStart;
    for (int I=0;I<MyTextBox.Lines.GetLength(0); I++) {
        SLen+=MyTextBox.Lines[I].Length+1;
        if (SLen>Cols) break;
    }
    if ((I==MyTextBox.Lines.GetLength(0)-1)&&(MyTextBox.Lines[I]=="")) Cols=0;
    else {
        Point P=MyTextBox.GetPositionFromCharIndex(Cols);
        Cols-=MyTextBox.GetCharIndexFromPosition(new Point(0, P.Y));
    }
    statusBar.Panels[0].Text = "Col: " + (Cols+1).ToString();
    statusBar.Panels[1].Text = "Row: " + (Rows+1).ToString();
}



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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