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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поменять фонт у выбранного текста 
:(
    Опции темы
Sharki
Дата 16.1.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите как поменять фонт выделенный текст в textBox.Например есть текст в textBox,как мне поменять только заглавие,сделать другой фонт,размер и тд.
Сейчас делаю так:
Код

fontDialog.ShowColor = true;
            fontDialog.ShowDialog();
                txt_File.Font = fontDialog.Font;
                txt_File.ForeColor = fontDialog.Color;

и понятно что фонт меняется во всём текстбоксе,а надо чтоб была возможность выбора фонта для выделенного куска текста.
Спасибо.


Это сообщение отредактировал(а) Sharki - 18.1.2009, 11:39
PM MAIL   Вверх
Drabuna
Дата 16.1.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Используй рич текстбокс:

Код

            Font myfont = new Font(richTextBox1.Font, FontStyle.Bold);
            richTextBox1.SelectionFont = myfont;
            richTextBox1.SelectionColor = Color.Blue;

PM MAIL   Вверх
Sharki
Дата 16.1.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

PM MAIL   Вверх
Sharki
Дата 17.1.2009, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ОК,послушал вашего совета ,передлал всё на richTextBox.Теперь делаю так:
Код

private void fontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fontDialog.Font = richTextBox_LetterText.SelectionFont;
            fontDialog.Color = richTextBox_LetterText.SelectionColor;

            if (fontDialog.ShowDialog() == DialogResult.OK)
            {
                // Display the Font dialog box
                // If the user clicks OK, get the characteristics of the font
                // Apply them to the selected text of the Rich Edit control
                richTextBox_LetterText.SelectionFont = fontDialog.Font;
                richTextBox_LetterText.SelectionColor = fontDialog.Color;
            }        
        }

Вроде всё работает,и текст кот. я выделяю меняет фонт(всё как доктор прописал),но есть следующий момент,мне нужно содержание richTextBox отправить на печать.Раньше когда был textBox я делал так:
Код

Font font;
            txt_LetterText.Font = fontDialog.Font;
            txt_LetterText.ForeColor = fontDialog.Color;
            font = fontDialog.Font;

затем font вставлял в :
Код

e.Graphics.MeasureString(txt_LetterText1.Text.Substring(intCurrentChar), font, new SizeF(intPrintAreaWidth, intPrintAreaHeight), fmtcuponText, out intCharsFitted2, out intLinesFilled2);
            e.Graphics.DrawString(txt_LetterText1.Text.Substring(intCurrentChar), font, Brushes.Black, rectPrintingArea, fmtLetterText);

и всё работало как надо.
А как теперь быть с richTextBox,как преоброзовать весь текст независимо от фонтов в font.
Спасибо большое.

Это сообщение отредактировал(а) Sharki - 18.1.2009, 11:41
PM MAIL   Вверх
Sharki
Дата 18.1.2009, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ребятки, помогите, плз!
PM MAIL   Вверх
Sharki
Дата 18.1.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите плиззз.если делаю вот так:
Код

Font font;
font = richTextBox_LetterText.Font;

то всеравно на печать выходит обычный текст,без изменений.
Спасибо.

Это сообщение отредактировал(а) Sharki - 18.1.2009, 11:41
PM MAIL   Вверх
THandle
Дата 18.1.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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




M
THandle
Модератор: Sharki,  пользуйтесь кнопкой "Код" или соответствующими тэгами для подсветки кода. Предлагаю Вам отредактировать свои сообщения в данной теме



Это сообщение отредактировал(а) THandle - 18.1.2009, 11:28
PM   Вверх
Sharki
Дата 18.1.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Sory.
PM MAIL   Вверх
diadiavova
Дата 18.1.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Вместо
Код

txt_LetterText.Font = fontDialog.Font;

надо написать
Код

txt_LetterText.SelectAll();
txt_LetterText.SelectionFont = fontDialog.Font;



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Sharki
Дата 18.1.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



diadiavova Спасибо большое,а как это же переделать на  richTextBox_LetterText,потому что я всё переделал на richTextBox_LetterText.
Font font;
font = что сдесь должно быть ???;
PM MAIL   Вверх
diadiavova
Дата 18.1.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Да собственно о нём и речь (о ричтекстбоксе). У обычного текстбокса свойства SelectionFont просто нет, там один шрифт для всего бокса, а шрифт выделенного фрагмента в ричтекстбоксе можно менять. Я просто показал, что для того, чтобы поменять шрифт всего текста текст сначала надо выделить, а потом поменять шрифт выделенного текста. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Sharki
Дата 19.1.2009, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



diadiavova ок,делаю так,в richTextBox_LetterText выделяю текст,затем захожу в меню
Код

private void fontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fontDialog.Font = richTextBox_LetterText.SelectionFont;
            fontDialog.Color = richTextBox_LetterText.SelectionColor;

            if (fontDialog.ShowDialog() == DialogResult.OK)
            {
                richTextBox_LetterText.SelectionFont = fontDialog.Font;
                richTextBox_LetterText.SelectionColor = fontDialog.Color;
            }

вижу что выделенный текст поменял фонт,затем в принт:
Код

Font font;
                richTextBox_LetterText.SelectAll();
                richTextBox_LetterText.SelectionFont = fontDialog.Font;
                font = а что сдесь должно быть ???

Спасибо.
PM MAIL   Вверх
diadiavova
Дата 19.1.2009, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(Sharki @  19.1.2009,  05:10 Найти цитируемый пост)
 font = а что сдесь должно быть ???

Это вообще лишняя переменная(или по крайней мере я не понял для чего она нужна).


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Sharki
Дата 19.1.2009, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Раньше когда я работал с textBox ,я делал так:
только вместо richTextBox_LetterText был textBox
Код


if (ckb_Letter.Checked == true)
            {
                Font font2 = new Font("Microsoft Sans Serif", 13);
                richTextBox_LetterText.Font = new Font(richTextBox_LetterText.Font, FontStyle.Regular);

                this.richTextBox_LetterText.Text = "         TO :   " + this.txt_ClientNameMail.Text + " \n\n" + "                   " + this.txt_AddressMail.Text
                                                           + "  \n" + "                   " + this.txt_CytiProvMail.Text + "  \n" + "                   " + this.txt_PCMail.Text;


                this.pictureBox13.Hide();
                this.pictureBox14.Hide();



                int intPrintAreaHeight;
                int intPrintAreaWidth;
                int marginLeft;
                int marginTop;

                 e.Graphics.DrawImage(this.pictureBox12.Image, 15, 15, this.pictureBox12.Size.Width, this.pictureBox12.Size.Height);
                e.Graphics.DrawImage(this.pictureBox11.Image, 100, 100, this.pictureBox11.Size.Width, this.pictureBox11.Size.Height);
                              intPrintAreaHeight = printDocument.DefaultPageSettings.PaperSize.Height - printDocument.DefaultPageSettings.Margins.Top - printDocument.DefaultPageSettings.Margins.Bottom;
                intPrintAreaWidth = printDocument.DefaultPageSettings.PaperSize.Width - printDocument.DefaultPageSettings.Margins.Left - printDocument.DefaultPageSettings.Margins.Right;

                printDocument.DefaultPageSettings.Margins.Bottom = 0; // 0,5 inches
                printDocument.DefaultPageSettings.Margins.Top = 0; // 0,5 inches
                printDocument.DefaultPageSettings.Margins.Left = 0; // 0,5 inches
                printDocument.DefaultPageSettings.Margins.Right = 0; // 0,5 inches

                marginLeft = printDocument.DefaultPageSettings.Margins.Left; // X coordinate
                marginTop = printDocument.DefaultPageSettings.Margins.Top; // Y coordinate

                if (printDocument.DefaultPageSettings.Landscape)
                {
                    int intTemp = intPrintAreaHeight;
                    intPrintAreaHeight = intPrintAreaWidth;
                    intPrintAreaWidth = intTemp;
                  
                }
                
                int intLineCount = (int)(intPrintAreaHeight / font2.Height);
               
                RectangleF rectPrintingArea = new RectangleF(marginLeft, marginTop, intPrintAreaWidth, intPrintAreaHeight);
                
                StringFormat fmt = new StringFormat(StringFormatFlags.LineLimit);
                
                int intLinesFilled;
                int intCharsFitted;               

                e.Graphics.MeasureString(richTextBox_LetterText.Text.Substring(intCurrentChar), font2, new SizeF(intPrintAreaWidth, intPrintAreaHeight), fmt, out intCharsFitted, out intLinesFilled);

                // Print the text to the page.

                e.Graphics.DrawString(richTextBox_LetterText.Text.Substring(intCurrentChar), font2, Brushes.Black, rectPrintingArea, fmt);
              
                intCurrentChar += intCharsFitted;
                
                if (intCurrentChar < (richTextBox_LetterText.Text.Length - 1))
                {
                    e.HasMorePages = true;
                }
                else
                {
                    e.HasMorePages = false;
                    // You must explicitly reset intCurrentChar it is static.
                    intCurrentChar = 0;
                }
                            }

            else
            {
            

                if (ckb_Letter.Checked == false)
                    this.pictureBox11.Hide();
                this.pictureBox12.Hide();

                e.Graphics.DrawImage(this.pictureBox14.Image, 15, 15, this.pictureBox14.Size.Width, this.pictureBox14.Size.Height);
                e.Graphics.DrawImage(this.pictureBox13.Image, 460, 980, this.pictureBox13.Size.Width, this.pictureBox13.Size.Height);

                printDocument.DefaultPageSettings.Margins.Bottom = 130; // 0,5 inches
                printDocument.DefaultPageSettings.Margins.Top = 170; // 0,5 inches
                printDocument.DefaultPageSettings.Margins.Left = 50; // 0,5 inches
                printDocument.DefaultPageSettings.Margins.Right = 50; // 0,5 inches

              
                Font font;
                .........
...........
                font = .....;          
               

                int intPrintAreaHeight;
                int intPrintAreaWidth;
                int marginLeft;
                int marginTop;

                              intPrintAreaHeight = printDocument.DefaultPageSettings.PaperSize.Height - printDocument.DefaultPageSettings.Margins.Top - printDocument.DefaultPageSettings.Margins.Bottom;
                intPrintAreaWidth = printDocument.DefaultPageSettings.PaperSize.Width - printDocument.DefaultPageSettings.Margins.Left - printDocument.DefaultPageSettings.Margins.Right;

              
                marginLeft = printDocument.DefaultPageSettings.Margins.Left; // X coordinate
                marginTop = printDocument.DefaultPageSettings.Margins.Top + 15; // Y coordinate

                 if (printDocument.DefaultPageSettings.Landscape)
                {
                    int intTemp = intPrintAreaHeight;
                    intPrintAreaHeight = intPrintAreaWidth;
                    intPrintAreaWidth = intTemp;

                   }
               
                int intLineCount = (int)(intPrintAreaHeight / font.Height);
               
                RectangleF rectPrintingArea = new RectangleF(marginLeft, marginTop, intPrintAreaWidth, intPrintAreaHeight);
                
                StringFormat fmt = new StringFormat(StringFormatFlags.LineLimit);
             
                int intLinesFilled;
                int intCharsFitted;
                e.Graphics.MeasureString(richTextBox_LetterText.Text.Substring(intCurrentChar), font, new SizeF(intPrintAreaWidth, intPrintAreaHeight), fmt, out intCharsFitted, out intLinesFilled);

                // Print the text to the page.

                e.Graphics.DrawString(richTextBox_LetterText.Text.Substring(intCurrentChar), font, Brushes.Black, rectPrintingArea, fmt);

                
                intCurrentChar += intCharsFitted;
              
               
                if (intCurrentChar < (richTextBox_LetterText.Text.Length - 1))
                {
                    e.HasMorePages = true;
                }
                else
                {
                    e.HasMorePages = false;
                    // You must explicitly reset intCurrentChar it is static.
                    intCurrentChar = 0;
                }
                            }

и тогда получалось что какой фонт я выбирал,весь текст в письме менялся ,и в font я подставлял фонт кот.я выбрал и на пичать выходил уже изменёный текст.
А теперь я все поменял на richTextBox_LetterText,и как теперь быть ???
Спасибо.
PM MAIL   Вверх
diadiavova
Дата 19.1.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



А нельзя ли сначала словами сформулировать задачу? Или мне по куску кода надо вычислить, что он означает? Я не понял в чём проблема сейчас. Для того, чтобы изменить шрифт в ричтекстбоксе промежуточные переменные не нужны. Если в этой переменной ты хочешь хранить какую-то другую информацию, то объясни какую именно.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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