Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Таблица в контроле RichTextBox как в M$ Word-e !!! / 7 сообщений из 7, страница 1 из 1
08.06.2009, 14:59
    #36031170
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Всем кому интерестно как сделать таблицу с переносом строк, слов, ... в одной ячейке (как в M$ Word-e). Делается так.
Пишем свой контрол.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
    public partial class FullTableRichTextBox : RichTextBox
    {
        public FullTableRichTextBox()
        {
            InitializeComponent();
        }
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern IntPtr LoadLibrary(string libname);
        private static IntPtr RichEditModuleHandle;
        private const string RichEditDllV3 = "RichEd20.dll";
        private const string RichEditDllV41 = "Msftedit.dll";
        private const string RichEditClassV3A = "RichEdit20A";
        private const string RichEditClassV3W = "RichEdit20W";
        private const string RichEditClassV41W = "RICHEDIT50W";
        protected override CreateParams CreateParams
        {
            [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
            get
            {
                if (RichEditModuleHandle == IntPtr.Zero)
                {
                    RichEditModuleHandle = LoadLibrary(RichEditDllV41);
                    if (RichEditModuleHandle == IntPtr.Zero)
                    {
                        return base.CreateParams;
                    }
                }
                CreateParams theParams = base.CreateParams;
                theParams.ClassName = RichEditClassV41W;
                return theParams;
            }
        }
...
Рейтинг: 0 / 0
08.06.2009, 15:07
    #36031200
Ray D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Well done, potkin! А дальше? :)
...
Рейтинг: 0 / 0
08.06.2009, 21:39
    #36032006
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Не понял ??? Что дальш ???
Вставляете таблицу так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
private void button6_Click(object sender, EventArgs e)
        {
            int p = 0;
            int k = Convert.ToInt32(nLenght.Value / Convert.ToInt32(nRows.Value));
            string position = "";
            switch (cb.SelectedIndex)
            {
                case 0: position = @"\trql"; break;
                case 1: position = @"\trqc"; break;
                case 2: position = @"\trqr"; break;
            }
            string strInsert = @"{\rtf1\ansi \trowd " + position + @"\par ";
            richTextBox1.SelectedRtf = strInsert;

            string Sh = Convert.ToInt32(nShrift.Value).ToString();
            for (int j = 1; j <= Convert.ToInt32(nRows.Value); j++)
            {
                p += k;
                if (j != Convert.ToInt32(nRows.Value)) strInsert += @"\cellx" + p.ToString();
                else { strInsert += @"\cellx" + p.ToString() + @"\pard\intbl \lang1033\f0\fs" + Sh + @" \r\n"; }
            }


            string cell = "";
            for (int i = 1; i <= Convert.ToInt32(nCells.Value); i++)
            {
                cell = "";
                for (int j = 1; j <= Convert.ToInt32(nRows.Value); j++) cell += @"\cell";
                if (i == 1) strInsert += @"\intbl" + cell + @"\row \r\n ";
                else strInsert += @"\intbl " + cell + @"\row \r\n ";
            }

            strInsert += @"\pard";
            richTextBox1.SelectedRtf = strInsert;
        }

в Новый контрол. И Всё работает как в МС Ворде !!!
...
Рейтинг: 0 / 0
08.06.2009, 22:20
    #36032042
Ray D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Ок, попробую, решил, что там что-то еще должно быть в FullTableRichTextBox.

Спасибо!
...
Рейтинг: 0 / 0
08.06.2009, 23:06
    #36032083
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Если надо вышлю Солюшн.
...
Рейтинг: 0 / 0
08.06.2009, 23:24
    #36032101
Ray D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Да нет, спасибо, я уже понял как это работает. Еще бы придумать, как мышкой размеры строк/столбцов менять, ну да не критично, пока обойдутся :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
06.06.2014, 01:51
    #38663097
Elizarka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица в контроле RichTextBox как в M$ Word-e !!!
Не совсем понял что такое nLenght , nRows , cb.SelectedIndex , nShrift , nCells. Прошу объяснить =)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Таблица в контроле RichTextBox как в M$ Word-e !!! / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]