powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Таблица в контроле RichTextBox как в M$ Word-e !!!
7 сообщений из 7, страница 1 из 1
Таблица в контроле RichTextBox как в M$ Word-e !!!
    #36031170
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем кому интерестно как сделать таблицу с переносом строк, слов, ... в одной ячейке (как в 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
Таблица в контроле RichTextBox как в M$ Word-e !!!
    #36031200
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Well done, potkin! А дальше? :)
...
Рейтинг: 0 / 0
Таблица в контроле RichTextBox как в M$ Word-e !!!
    #36032006
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял ??? Что дальш ???
Вставляете таблицу так:

Код: 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
Таблица в контроле RichTextBox как в M$ Word-e !!!
    #36032042
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, попробую, решил, что там что-то еще должно быть в FullTableRichTextBox.

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


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