Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Micren
Статус: Бакалавр
Рейтинг: 807
∙ повысить рейтинг »
Evgenijm
Статус: 10-й класс
Рейтинг: 270
∙ повысить рейтинг »
Серг aka umbSSE
Статус: 10-й класс
Рейтинг: 265
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Microsoft .NET : C#

Номер выпуска:167
Дата выхода:30.09.2009, 07:30
Администратор рассылки:Alexey G. Gladenyuk, Управляющий
Подписчиков / экспертов:312 / 58
Вопросов / ответов:1 / 1

Вопрос № 172599: Уважаемые эксперты! Создал в VS2008rus простой текстовый редактор на основе Net.Framework 3.5, с поддержкой вкладок. В заголовке каждой вкладки прорисовывается крестик для закрытия вкладки с помощью кода :


Вопрос № 172599:

Уважаемые эксперты! Создал в VS2008rus простой текстовый редактор на основе Net.Framework 3.5, с поддержкой вкладок. В заголовке каждой вкладки прорисовывается крестик для закрытия вкладки с
помощью кода :

Код:

// Координаты точки расположения картинки close на заголовке вкладки
private Point _imageLocation = new Point(15, 5);

// Координаты расположения точки куда пользователь должен попасть,
// чтобы закрыть вкладку
private Point _imgHitArea = new Point(13, 2);


private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
try
{
// Создаём обьект класса Image img, ссылающийся на изображение по адресу D:\\C#PRO J~1.......
Image img = new Bitmap("D:\\C#PROJ~1\\TABNOT~1.COM\\new\\TEXTED~1\\RESOUR~1\\Close.ico");

// Получаем ограничивающий прямоугольник заголовка активной вкладки
Rectangle r = e.Bounds;
r = this.tabControl1.GetTabRect(e.Index);
r.Offset(2, 2);

// Создаем твердую кисть черного цвета
Brush TitleBrush = new SolidBrush(Color.Black);

// Получаем текст из заголовка активной вкладки и снова пропечатываем его там же
string title = this.tabControl1.TabPages[e.Index].Text;
e.Graphics.DrawString(title, this.Font, TitleBrush, new PointF(r.X, r.Y));

// Прорисовываем картинку img в заголовке активной вкладки справа от текста
e.Graphics.DrawImage(img, new Point(r.X + (this.tabControl1.GetTabRect(e.Index).Width - _imageLocation.X), _i mageLocation.Y));
}
catch (Exception) { }
}

/// <summary>
/// Возникает при щелчке мышью по заголовку активной-неактивной вкладки в tabControl1
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
//Получаем ссылку на tabControl1 формы frmmain
TabControl tc = (TabControl)sender;
//Получаем координаты точки где пользователь щёлкнул мышью
Point p = e.Location;

int _tabWidth = 0;
_tabWidth = this.tabControl1.GetTabRect(tc.SelectedIndex).Width - (_imgHitArea.X);
Rectangle r = this.tabControl1.GetTabRect(tc.SelectedIndex);
r.Offset(_tabWidth, _imgHitArea.Y);
r.Width = 16;
r.Height = 16;

//Если пользователь щелчком мыши попал в изображение крестика в заголовке
if (r.Contains(p))
{
//Получаем ссылку на активное окно frmchild и закрываем его
frmchild frm = (frmchild)this.ActiveMdiChild;
frm.Close();
}
}


Так вот, у меня всё работает замечательно, а на других машинах, с установленным VS2008rus, заголовки вкладок отображаются пустыми, нет ни текта, ни крестика. Подскажите, пожалуйста, в чем может быть причина?

Код главной формы :
Код:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Text;
usin g System.Windows.Forms;

namespace TextEditor
{
public partial class frmparent : Form
{
public frmparent ()
{
InitializeComponent();

// Включаем-отключаем пункты меню и тулбары в зависимости от того есть ли
// в tabControl1 хоть одна вкладка
// MenuOptionsOnOff();

//Определяем номер страницы, с которой следует начать печать
printDialog1.PrinterSettings.FromPage = 1;
//Определяем максимальный номер печатаемой страницы.
printDialog1.PrinterSettings.ToPage = printDialog1.PrinterSettings.MaximumPage;

}
// Координаты точки расположения картинки close на заголовке вкладки
private Point _imageLocation = new Point(15, 5);

// Координаты расположения точки куда пользователь должен попасть,
// чтобы закрыть вкладку
private Point _imgHitArea = new Point(13, 2);

//Переменная для хранения текста для печати.
//В нее мы будем помещать текст из richTextBox1
string stringPrintText;
//Переменная, определяющая номер страницы, с которой нужно начать печать
int StartPage;
//Переменная, определяющая количество страниц для печати:
int NumPages;
//Переменная, определяющая номер текущей страницы:
int PageNumber;


/// <summary>
/// счётчик когда-либо созданных пользователем документов
/// </summary>
int childCount = 0;

/// <summary>
/// Метод; Создает новый документ (форму frmchild) и связанную с ним вкладку
/// </summary>
/// <returns></returns>
public frmchild NewDoc()
{
//Создаём дочернюю MDI форму
frmchild childForm = new frmchild();

//Указываем, что родительским контейнером
//нового экземпляра будет эта, главная форма (т.е. frmparent).
childForm.MdiParent = this;

// Дочерняя форма получает ссылку на tabControl1 родительской формы
childForm.TabCtrl = tabControl1;

// Добавляем вкладку на tabControl1
TabPage tp = new TabPage();
tp.Parent = tabControl1;
tp.Show();

// Дочерней форме передаём ссылку на эту вкладку
childForm.TabPag = tp;

//Выводим дочернюю форму
childForm.Show();

//Переключаем фокус на только что созданную вкладку
tabControl1.SelectedTab = tp;

//Включаем пункты меню и тулбары, если они выключены
MenuOptionsOnOff();

return childForm;
}

/// <summary>
/// Возникает при щелчке мышью по заголовку неактивной вкладки в tabControl1
/// </summary>
/// <param name=&quo t;sender"></param>
/// <param name="e"></param>
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (frmchild childForm in this.MdiChildren)
{
// Находим связанную с этой вкладкой форму frmchild и активируем её

if (childForm.TabPag.Equals(tabControl1.SelectedTab))
childForm.Select();
}
}

/// <summary>
/// Возникает при необходимости прорисовать заголовок активной вкладки в tabControl1
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
try
{
// Создаём обьект класса Image img, с сылающийся на изображение по адресу D:\\C#PROJ~1.......
Image img = new Bitmap("D:\\C#PROJ~1\\TABNOT~1.COM\\new\\T EXTED~1\\RESOUR~1\\Close.ico");

// Получаем ограничивающий прямоугольник заголовка активной вкладки
Rectangle r = e.Bounds;
r = this.tabControl1.GetTabRect(e.Index);
r.Offset(2, 2);

// Создаем твердую кисть черного цвета
Brush TitleBrush = new SolidBrush(Color.Black);

// Получаем текст из заголовка активной вкладки и снова пропечатываем его там же
string title = this.tabControl1.TabPages[e.Index].Text;
e.Graphics.DrawString(title, this.Font, TitleBrush, new PointF(r.X, r.Y));

// Прорисовываем картинку img в заголовке активной вкладки справа от текста
e.Graphics.DrawImage(img, new Point(r.X + (this.tabControl1.GetTabRect(e.Index).Width - _imageLocation.X), _imageLocation.Y));
}
catch (Exception) { }
}

/// <summary>
/// Возникает при щелчке мышью по заголовку активной-неактивной вкладки в tabControl1
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
//Получаем ссылку на tabControl1 формы frmmain
TabControl tc = (TabControl)sender;
//Получаем координаты точки где пользователь щёлкнул мышью
Point p = e.Location;

int _tabWidth = 0;
_tabWidth = this.tabControl1.GetTabRect(tc.SelectedIndex).Width - (_imgHitArea.X);
Rectangle r = this.tabControl1.GetTabRect(tc.SelectedIndex);
r.Offset(_tabWidth, _imgHitArea.Y);
r.Width = 16;
r.Height = 16;

//Если пользователь щелчком мыши попал в изобра жение крестика в заголовке
if (r.Contains(p))
{
//Получаем ссылку на активное окно frmchild и закрываем его
frmchild frm = (frmchild)this.ActiveMdiChild;
frm.Close();
}
}


// Возникают при выборе соответствующих строк меню и кнопок на панелях
//{

private void menuopen_Click(object sender, System.EventArgs e)
{

// Создаем файловый диалог и открываем его
MyFileDialog dlg = new MyFileDialog();

dlg.ShowDialog();
//Если нажата кнопка OK в диалоге и пользователь указал путь
if (dlg.FilePaths != null)
{

for (int i = 0; i < dlg.FilePaths.Length; i++)
{
//Создаём новый документ
frmchild doc = NewDoc();

//Выз ываем метод Open формы frmchild
doc.Open(dlg.FilePaths[i], dlg.FileEncoding);

// Отключаем панель форматирования и контрол на нем,
// если редактируемый документ не RTF
MenuOptionsOnOff();
}
}
}

private void menusave_Click(object sender, EventArgs e)
{
//Получаем ссылку на активное окно frmchild
frmchild frm = (frmchild)this.ActiveMdiChild;

// Если ссылку получить удалось
if (frm != null)
{
bool saveAs = false;

// Если пользователь хочет документ сохранить как...
// то сообщаем об этом форме frmchild
if (sender == menusaveAs)
saveAs = true;

//Вызываем метод Save() класса frmchild
frm.Save(sa veAs);

//Указываем, что родительской формой является форма frmparent
frm.MdiParent = this;
}
}

private void menuexit_Click(object sender, EventArgs e)
{
this.Close();
}

private void menucut_Click(object sender, System.EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.Cut();
}
}

private void menucopy_Click(object sender, System.EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.Copy();
}
}

private void menupaste_Click(object sender, System.EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текуще е активное окно
if (frm != null)
{
frm.Paste();
}
}

private void menudelete_Click(object sender, System.EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.Delete();
}
}

private void menuselectAll_Click(object sender, System.EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.SelectAll();
}
}

private void menufont_Click(object sender, EventArgs e)
{
//Переменной frm присваиваем ссылку на текущий активный документ
frmchild frm = (frmchild) this.ActiveMdiChild;

if (frm != null)//Если ссылку получить удалось
{
//Указываем, что родительской формой является форма frmmain
frm.MdiParent = this;
//Проставляем галочки в fontDialog1 соотвественно текущему шрифту и цвету
fontDialog1.Font = frm.RTBox1SelectionFont;
fontDialog1.Color = frm.RTBox1SelectionColor;
//Если в диалоге нажата кнопка OK
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
//Текущий шрифт и цвет устанавливаем соотвественно включенных галочек в fontDialog1
frm.RTBox1SelectionFont = fontDialog1.Font;
frm.RTBox1SelectionColor = fontDialog1.Color;

// Устанавливаем соотвественно включенных галочек в fontDialog1 :

// регулятор выбора размера шрифта
numericUpDownFontSize.Value = (decimal)fontDialog1.Font.Size;

// кнопки выбора свойств шрифта (Bold,Italic,Strikeout,Underline) на FormatBar
buttonStrikeout.Checked = fontDialog1.Font.Strikeout;
buttonUnderline.Checked = fontDialog1.Font.Underline;
buttonItalic.Checked = fontDialog1.Font.Italic;
buttonBold.Checked = fontDialog1.Font.Bold;
}
//Показываем текущий документ
frm.Show();
}
}

private void menucolor_Click(object sender, EventArgs e)
{
//Переменной frm присваиваем ссылку на текущий активный документ
frmchild frm = (frmchild)this.ActiveMdiChild;
if (frm != null)//Если форма frm существует (открыт хотя бы один документ)
{
//Указываем, что родительс кой формой является форма frmmain
frm.MdiParent = this;
//Проставляем нужный цвет в colorDialog1 со отвественно текущему цвету
colorDialog1.Color = frm.RTBox1SelectionColor;

//Если в диалоге нажата кнопка OK
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
//Текущий цвет устанавливаем соотвественно выбранному в colorDialog1
frm.RTBox1SelectionColor = colorDialog1.Color;
}

frm.Show();
}
}

private void menucascade_Click(object sender, System.EventArgs e)
{
this.LayoutMdi(MdiLayout.Cascade);//каскадное расположение форм
}

private void menutileHorizontal_Click(object sender, System.EventArgs e)
{
this.LayoutMdi(MdiLayout.TileHorizontal);//горизонтальное расположение форм
}

private void menutileVertical_Click(object sender, System.EventArgs e)
{
this.LayoutMdi(MdiLayout.TileVertical);//вертикальное расположение форм
}

private void menuundo_Click(object sender, EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.Undo();
}
}

private void menuredo_Click(object sender, EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.Redo();
}
}

private void menualignmentLeft_Click(object sender, EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.AlignmentLeft();
}
}

private void menualignmentRight_Click(object sender, EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.AlignmentRight();
}
}

private void menualignmentCenter_Click(object sender, EventArgs e)
{
frmchild frm = (frmchild)this.ActiveMdiChild;//Переменной frm присваиваем ссылку на текущее активное окно
if (frm != null)
{
frm.AlignmentCenter();
}
}

private void menuFind_Click(object sender, EventArgs e)
{
//Переменной frm присваиваем ссылку на текущий активный документ
frmchild frm = (frmchild)this.ActiveMdiChild;
//Если ссылку п олучить удалось
if (frm != null)
{
frm.Find();//Вызываем метод Find() формы frmchild

//Указываем, что родительской формой является форма frmmain
frm.MdiParent = this;
}
}

private void menuabout_Click(object sender, EventArgs e)
{
About frm = new About();
frm.Show();
}

private void menu_View_Toolbars_CheckedChanged(object sender, EventArgs e)
{
// Включаем-отключаем видимость панелей, в зависимости от включенных
// опций меню view
barFormat.Visible = numericUpDownFontSize.Visible = menuFormatBar.Checked;
barStandard.Visible = menuStandardBar.Checked;

//Перемещаем numericUpDownFontSize в зависимости от видимости barStandard
int x = (barStandard.Visible) ? 52 : 27;
numericUpDownFontSize.Location = new Point(187, x);
}

private void printDocument1_PrintPage(object sender, Pri ntPageEventArgs e)
{
//Получаем ссылку на активное окно frmchild
frmchild frm = (frmchild)this.ActiveMdiChild;
if (frm != null)
{

//создаем экземпляр класса Graphics
Graphics graph = e.Graphics;
//Создаем объект font, которому устанавливаем
// шрифт элемента rtbText
Font font = frm.RTBox1Font;
//Получаем значение межстрочного интервала - высоту шрифта Т1, 134
float HeightFont = font.GetHeight(graph);
//Создаем экземпляр stringformat класса StringFormat для определения
//дополнительных параметров форматирования текста.
StringFormat stringformat = new StringFormat();
//Создаем экземляры rectanglefFull и rectanglefText класса RectangleF для
//определния областей печати и текста . Т1, 104
RectangleF rectanglefFull, rectanglefText;
//Создаем переменные для подсчета числа символов и строк.
int NumberSymbols, NumberLines;

//В качестве области печати устанавливаем объект rectanglefFull
if (graph.VisibleClipBounds.X < 0) rectanglefFull = e.MarginBounds;
else
//Определяем объект rectanglefFull
rectanglefFull = new RectangleF(
//Устанавливаем координату X
e.MarginBounds.Left - (e.PageBounds.Width - graph.VisibleClipBounds.Width) / 2,
//Устанавливаем координату Y
e.MarginBounds.Top - (e.PageBounds.Height - graph.VisibleClipBounds.Height) / 2,
//Устанавливаем ширину области
e.MarginBounds.Width,
//Уста навливаем высоту области
e.MarginBounds.Height);

//Область текста будет представлять собой копию области rectanglefFull c учетом высоты шрифта

rectanglefText = RectangleF.Inflate(rectanglefFull, 0, -2 * HeightFont);
//Определяем число строк
int NumDisplayLines = (int)Math.Floor(rectanglefText.Height / HeightFont);
//Устанавливаем высоту области
rectanglefText.Height = NumDisplayLines * HeightFont;

// Элемент RichTextBox обладает свойством WordWrap, при установке
// значения True которого текст автоматически переносится на новую
// строку. Однако разбитый на строки текст может выйти за границы
// предназначенной для него области rectanglefText. Чтобы этого не
// произошло, мы создали экземпляр stringformat класса StringFormat,
// для которого теперь устанавливаем значение Trimming:

if (frm.RTBox1WordWrap)
{
stringformat.Trimming = StringTrimming.Word;
}
else
{
stringformat.Trimming = StringTrimming.EllipsisCharacter;
stringformat.FormatFlags |= StringFormatFlags.NoWrap;
}
//При печати выбранных страниц переходим к первой стартовой странице
while ((PageNumber < StartPage) && (stringPrintText.Length > 0))
{
if (frm.RTBox1WordWrap)

//Измеряем текстовые переменные,
//формирующие печать, и возвращаем число символов NumberSymbols
//и число строк NumberLines

//Метод MeasureString возвращает число выводимых символов
graph.MeasureString(stringPrintText, font, rectanglefText.Size, stringformat, out NumberSymbols, out N umberLines);
else
NumberSymbols = SymbolsInLines(stringPrintText, NumDisplayLines);
stringPrintText = stringPrintText.Substring(NumberSymbols);
//Увеличиваем число страниц
PageNumber++;
}
//Если длина строки stringPrintText равняется нулю (нет текста для печати),
// Останавливаем печать
if (stringPrintText.Length == 0)
{
e.Cancel = true;
return;
}

//Выводим (рисуем) текст для печати - stringPrintText, используем для этого шрифт font,
//кисть черного цвета - Brushes.Black, область печати - rectanglefText,
//передаем строку дополнительного форматирования stringformat
graph.DrawString(stringPrintText, font, Brushes.Black, r ectanglefText, stringformat);
//Получаем текст для следующей страницы
if (frm.RTBox1WordWrap)
graph.MeasureString(stringPrintText, font, rectanglefText.Size, stringformat, out NumberSymbols, out NumberLines);
else
NumberSymbols = SymbolsInLines(stringPrintText, NumDisplayLines);
stringPrintText = stringPrintText.Substring(NumberSymbols);
//Очищаем объект stringformat, использованный для формирования полей.
stringformat = new StringFormat();
//Добавляем вывод на каждую страницу ее номер
stringformat.Alignment = StringAlignment.Far;
graph.DrawString("Страница " + PageNumber, font, Brushes.Black, rectanglefFull, stringformat);
PageNumber++;
//Cнова проверяем, имеется ли текст для печати и номер страницы, заданной для печати
e.HasMorePages = (stringPrintText.Length > 0) && (PageNumber < StartPage + NumPages);
//Для печати из окна предварительного просмотра снова инициализируем переменные
if (!e.HasMorePages)
{
stringPrintText = frm.RTBox1Text;
StartPage = 1;
NumPages = printDialog1.PrinterSettings.MaximumPage;
PageNumber = 1;
}

frm.MdiParent = this;
}
}

private void menuPageSetup_Click(object sender, EventArgs e)
{
//Показываем диалог
pageSetupDialog1.ShowDialog();
}

private void menuPrintPreview_Click(object sender, EventArgs e)
{
//Получаем ссылку на активное окно frmchild
frmchild frm = (frmchild)this.ActiveMdiChild;
if (frm != null)
{
//Инициализируем переменные
printDocument1.DocumentName = Text;
stringPrintText = frm.RTBox1Text;
StartPage = 1;
NumPages = printDialog1.PrinterSettings.MaximumPage;
PageNumber = 1;
//Показываем диалог
printPreviewDialog1.ShowDialog();
}
frm.MdiParent = this;
}

/// <summary>
/// В обработчике пункта меню menuPrint определяем диапазон страниц
/// – все страницы, ряд или выделенная область
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuPrint_Click(object sender, EventArgs e)
{ //Получаем ссылку на активное окно frmchild
frmchild frm = (frmchild)this.ActiveMdiChild;
if (frm != null)
{
printDialog1.AllowSele ction = frm.RTBox1SelectionLength > 0;
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.DocumentName = Text;
//Определяем диапазон страниц для печати
switch (printDialog1.PrinterSettings.PrintRange)
{
//Выбраны все страницы
case PrintRange.AllPages:
stringPrintText = frm.RTBox1Text;
StartPage = 1;
NumPages = printDialog1.PrinterSettings.MaximumPage;
break;
//Выбрана выделенная область
case PrintRange.Selection:
stringPrintText = frm.RTBox1SelectedText;
StartPage = 1;
NumPages = printDialog1.PrinterSettings.Ma ximumPage;
break;
//Выбран ряд страниц
case PrintRange.SomePages:
stringPrintText = frm.RTBox1Text;
StartPage = printDialog1.PrinterSettings.FromPage;
NumPages = printDialog1.PrinterSettings.ToPage - StartPage + 1;
break;
}
PageNumber = 1;
//Вызываем встроенный метод для начала печати
printDocument1.Print();
}
frm.MdiParent = this;
}
}

/// <summary>
/// Для учета символов, не попадающих в область rectanglefText,
/// добавляем метод SymbolsInLines:
/// </summary>
/// <param name="stringPrintText"></param>
/// <pa ram name="NumLines"></param>
/// <returns></returns>
int SymbolsInLines(string stringPrintText, int NumLines)
{
int index = 0;
for (int i = 0; i < NumLines; i++)
{
index = 1 + stringPrintText.IndexOf('\n', index);
if (index == 0)
return stringPrintText.Length;
}
return index;
}

private void menuNewRtfOrTextFile_Click(object sender, EventArgs e)
{
//Создаём новый документ
frmchild doc = NewDoc();

//Переменная extens хранит расширение создаваемого файла
string extens = "txt";

//Если источником события была опция New rtf file,
//то меняем расширение на .rtf и указываем форме frmchild,
//что этот документ в форма те rtf
if (sender == menuNewRtfFile || sender == buttonNewRtfFile)
{
extens = "rtf";
doc.IsRtf = true;
}

// Отключаем панель форматирования и контрол на нем,
// если редактируемый документ не RTF
MenuOptionsOnOff();

//генерируем его название, увеличивая счётчик созданных пользователем документов
doc.Text = doc.TabPag.Text = "Document " + ++childCount + "." + extens + " ";
}

/// <summary>
/// Возникает при щелчке мышью по одной из кнопок Bold,Italic,Strikeout,Underline
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FontStyleButtonsClick(object sender, EventArgs e)
{
// Изменяем свойства текущего шрифта Bold,Italic,Strikeout,Underline
//соответственно факту нажаты или отжаты ли одноименные к нопки на
//панели форматирования

//Переменной frm присваиваем ссылку на текущее активное окно
frmchild frm = (frmchild)this.ActiveMdiChild;
//Если ссылку получить удалось и в richTextBox1 выбран шрифт
if (frm != null && frm.RTBox1SelectionFont != null)
{
// Изменяем стиль текущего шрифта соответственно включенных
// кнопок Bold,Italic,Strikeout,Underline.
FontStyle FS = new FontStyle();
if (buttonBold.Checked)
FS |= FontStyle.Bold;
if (buttonItalic.Checked)
FS |= FontStyle.Italic;
if (buttonUnderline.Checked)
FS |= FontStyle.Underline;
if (buttonStrikeout.Checked)
FS |= FontStyle.Strikeout;

frm.RTBox1SelectionFont = new Font(frm.RTBox1Sele ctionFont, FS);
}
}

/// <summary>
/// Происходит при каждой активации дочернего окна
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmparent_MdiChildActivate(object sender, EventArgs e)
{
//Переменной frm присваиваем ссылку на текущее активное окно
frmchild frm = (frmchild)this.ActiveMdiChild;

//Если ссылку получить удалось и в richTextBox1 выбран шрифт
if (frm != null && frm.RTBox1SelectionFont != null)
{
// Отключаем панель форматирования и контрол на нем,
// если редактируемый документ не RTF
MenuOptionsOnOff();

// Включаем-выключаем соотвественно выбранному шрифту
// в richTextBox1 активной формы frmchild :

// кнопки на barFormat (Bold,Italic,Strikeout,Underline)
buttonStrikeout.Checked = frm.RTBox1SelectionFont.Strikeout;
buttonUnderline.Checked = frm.RTBox1SelectionFont.Underline;
buttonItalic.Checked = frm.RTBox1SelectionFont.Italic;
buttonBold.Checked = frm.RTBox1SelectionFont.Bold;

// регулятор выбора размера шрифта
numericUpDownFontSize.Value = (decimal)frm.RTBox1SelectionFont.Size;
}
}

/// <summary>
/// Возникает при изменении значения в элементе выбора размера шрифта
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void numericUpDownFontSize_ValueChanged(object sender, EventArgs e)
{
//Переменной frm присваив аем ссылку на текущее активное окно
frmchild frm = (frmchild)this.ActiveMdiChild;
//Если ссылку получить удалось и в richTextBox1 выбран шрифт
if (frm != null && frm.RTBox1SelectionFont != null)
{
float newFontSize = (float)numericUpDownFontSize.Value;
Font currentFont = frm.RTBox1SelectionFont;
frm.RTBox1SelectionFont = new System.Drawing.Font(currentFont.FontFamily, newFontSize, currentFont.Style);
}
}

/// <summary>
/// генерируется при перетаскивании пользователем файла на эту форму
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmparent_DragEnter(object sender, DragEventArgs e)
{
//Если пользователь пытается перетащить файл,
//то получаем ссылку на этот файл
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDro pEffects.Link;
else e.Effect = DragDropEffects.None;//Иначе ничего не получаем
}

/// <summary>
/// генерируется , когда пользователь , при перетаскивании файла
/// на эту форму, отпускает левую кнопку
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmparent_DragDrop(object sender, DragEventArgs e)
{
//Создаем строковый массив путей ко всем файлам, брошенным пользователем на эту форму
string[] paths = e.Data.GetData(DataFormats.FileDrop) as string[];
//Если массив paths существует и он не пустой
if (paths != null && paths.Length > 0)
for (int i = 0; i < paths.Length; i++)
{
// Если файл по пути paths[i] существует
if (File.Exists(paths[i]))
{
//Создаём новый документ
frmchild doc = NewDoc();

// Открываем его в кодировке 'Кириллица (Windows)'
doc.Open(paths[i], Encoding.GetEncoding(1251));

// Отключаем панель форматирования и контрол на нем,
// если редактируемый документ не RTF
MenuOptionsOnOff();
}
}
}

/// <summary>
/// Включает-отключает пункты меню и тулбары в зависимости от того есть ли
/// в tabControl1 хоть одна вкладка
/// </summary>
public void MenuOptionsOnOff()
{
menuedit.Enabled =
menuformat.Enabled = menuwindow.Enabled =
barFormat.Enabled = buttonSave.Enabled =
buttonCut.Enabled = buttonCopy.Enabled =
buttonPaste.Enabled = buttonUndo.Enabled =
buttonRedo.Enabled = buttonFind.Enabled =
numericUpDownFontSize.Enabled = menusave.Enabled =
menusaveAs.Enabled = menuPageSetup.Enabled =
menuPrintPreview.Enabled = menuPrint.Enabled =
tabControl1.HasChildren;

//Переменной frm присваиваем ссылку на текущее активное окно
frmchild frm = (frmchild)this.ActiveMdiChild;

// Если ссылку получить удалось, то отключаем строку менню Format
// панель форматирования и контрол на ней,
// если редактируемый документ не RTF
if (frm != null)
menuformat.Enabled = barFormat.Enabled =
numericUpDownFontSize.Enabled = frm.IsRtf;
}
}
}

Дизайнер-код главной формы:
[code]namespace TextEditor
{
partial class frmparent
{
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Код, автоматически созданный конструктором форм Windows

/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// с одержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmparent));
this.tabControl1 = new System.Windows.Forms.TabControl();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.menufile = new System.Windows.Forms.ToolStripMenuItem();
this.menunew = new System.Windows.Forms.ToolStripMenuItem();
this.menuNewRtfFile = new System.Windows.Forms.ToolStripMenuItem();
this.menuNewTextFile = new System.Windows.Forms.ToolStripMenuItem();
this.menuopen = new System.Windows.Forms.ToolStripMenuItem();
this.menusave = new System.Windows.Forms.ToolStripMenuItem();
this.menusaveAs = new System.Windows.Forms.ToolStripMenuItem();
this.menuPageSetup = new System.Windows.Forms.ToolStripMenuItem();
this.menuPrintPreview = new System.Windows.For ms.ToolStripMenuItem();
this.menuPrint = new System.Windows.Forms.ToolStripMenuItem();
this.menuexit = new System.Windows.Forms.ToolStripMenuItem();
this.menuview = new System.Windows.Forms.ToolStripMenuItem();
this.menuToolbars = new System.Windows.Forms.ToolStripMenuItem();
this.menuFormatBar = new System.Windows.Forms.ToolStripMenuItem();
this.menuStandardBar = new System.Windows.Forms.ToolStripMenuItem();
this.menuedit = new System.Windows.Forms.ToolStripMenuItem();
this.menuundo = new System.Windows.Forms.ToolStripMenuItem();
this.menuredo = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.menucut = new System.Windows.Forms.ToolStripMenuItem();
this.menucopy = new System.Windows.Forms.ToolStripMenuItem();
this.menupaste = new System.Windows.Forms.ToolStripMenuItem();
this.menudelete = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
this.menuselectAll = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.menuFind = new System.Windows.Forms.ToolStripMenuItem();
this.menuformat = new System.Windows.Forms.ToolStripMenuItem();
this.menufont = new System.Windows.Forms.ToolStripMenuItem();
this.menucolor = new System.Windows.Forms.ToolStripMenuItem();
this.menuparagraphAlignment = new System.Windows.Forms.ToolStripMenuItem();
this.menualignmentLeft = new System.Windows.Forms.ToolStripMenuItem();
this.menualignmentRight = new System.Windows.Forms.ToolStripMenuItem();
this.menualignmentCenter = new System.Windows.Forms.ToolStripMenuItem();
this.menuwindow = new System.Windows.Forms.ToolStripMenuItem();
this.menucascade = new System.Windows.Forms.ToolStripMenuItem();
this.menutileHorizontal = new System.Windows.Forms.ToolStripMenuItem();
this.menutileVertical = new System.Windows.Forms.ToolStripMenuItem();
this.menuhelp = new System.Windows.Forms.ToolStripMenuItem();
this.menuabout = new System.Windows.Forms.ToolStripMenuItem();
this.fontDialog1 = new System.Windows.Forms.FontDialog();
this.colorDialog1 = new System.Windows.Forms.ColorDialog();
this.barStandard = new System.Windows.Forms.ToolStrip();
this.buttonNewTextFile = new System.Windows.Forms.ToolStripButton();
this.buttonNewRtfFile = new System.Windows.Forms.ToolStripButton();
this.buttonOpen = new Syst em.Windows.Forms.ToolStripButton();
this.buttonSave = new System.Windows.Forms.ToolStripButton();
this.toolS tripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.buttonCut = new System.Windows.Forms.ToolStripButton();
this.buttonCopy = new System.Windows.Forms.ToolStripButton();
this.buttonPaste = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.buttonUndo = new System.Windows.Forms.ToolStripButton();
this.buttonRedo = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.buttonFind = new System.Windows.Forms.ToolStripButton();
this.numericUpDownFontSize = new System.Windows.Forms.NumericUpDown();
this.buttonBold = new System.Windows.Forms.ToolStripButton();
this.buttonItalic = new System.Windows.Forms.ToolStripButton();
this.buttonUnderline = new Sy stem.Windows.Forms.ToolStripButton();
this.buttonStrikeout = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.buttonTextAlignLeft = new System.Windows.Forms.ToolStripButton();
this.buttonTextAlignCenter = new System.Windows.Forms.ToolStripButton();
this.buttonTextAlignRight = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.barFormat = new System.Windows.Forms.ToolStrip();
this.printDocument1 = new System.Drawing.Printing.PrintDocument();
this.pageSetupDialog1 = new System.Windows.Forms.PageSetupDialog();
this.printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog();
this.printDialog1 = new System.Windows.Forms.PrintDialog();
this.menuStrip1.S uspendLayout();
this.barStandard.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDownFontSize)).BeginInit();
this.barFormat.SuspendLayout();
this.SuspendLayout();
//
// tabControl1
//
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tabControl1_DrawItem);
this.tabControl1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.tabControl1_MouseClick);
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menufile,
this.menuview,
this.menuedit,
this.menuformat,
this.menuwindow,
this.menuhelp});
resources.ApplyResources(this.menuStrip1, "menuStrip1");
this.menuStrip1.Name = "menuStrip1";
//
// menufile
//
this.menufile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menunew,
this.menuopen,
this.menusave,
this.menusaveAs,
this.menuPageSetup,
this.menuPrintPreview,
this.menuPrint,
this.menuexit});
this.menufile.Name = "menufile";
resources.ApplyResources(this.menufi le, "menufile");
//
// menunew
//
this.menunew.DropDownItems.AddRa nge(new System.Windows.Forms.ToolStripItem[] {
this.menuNewRtfFile,
this.menuNewTextFile});
this.menunew.Name = "menunew";
resources.ApplyResources(this.menunew, "menunew");
//
// menuNewRtfFile
//
this.menuNewRtfFile.Name = "menuNewRtfFile";
resources.ApplyResources(this.menuNewRtfFile, "menuNewRtfFile");
this.menuNewRtfFile.Click += new System.EventHandler(this.menuNewRtfOrTextFile_Click);
//
// menuNewTextFile
//
this.menuNewTextFile.Name = "menuNewTextFile";
resources.ApplyResources(this.menuNewTextFile, "menuNewTextFile");
this.menuNewTextFile.Click += new System.EventHandler(this.menuNewRtfOrTextFile_Click);
//
// menuopen
//
this.menuopen.Name = "menuopen";
resources.ApplyResources(this.menuopen, "menuopen");
this.menuopen.Click += new System.EventHandler(this.menuopen_Click);
//
// menusave
//
resources.ApplyResources(this.menusave, "menusave");
this.menusave.Name = "menusave";
this.menusave.Click += new System.EventHandler(this.menusave_Click);
//
// menusaveAs
//
resources.ApplyResources(this.menusaveAs, "menusaveAs");
this.menusaveAs.Name = "menusaveAs";
this.menusaveAs.Click += new System.EventHandler(this.menusave_Click);
//
// menuPageSetup
//
resources.ApplyResources(this.menuPageSetup, "menuPageSetup");
this.menuPage Setup.Name = "menuPageSetup";
this.menuPageSetup.Click += new System.EventHandler(this.menuPageSetup_Click);
//
// menuPrintPreview
//
resources.ApplyResources(this.menuPrintPreview, "menuPrintPreview");
this.menuPrintPreview.Name = "menuPrintPreview";
this.menuPrintPreview.Click += new System.EventHandler(this.menuPrintPreview_Click);
//
// menuPrint
//
resources.ApplyResources(this.menuPrint, "menuPrint");
this.menuPrint.Name = "menuPrint";
this.menuPrint.Click += new System.EventHandler(this.menuPrint_Click);
//
// menuexit
//
this.menuexit.Name = "menuexit";
resources.ApplyResources(this.menuexit, "menuexit");
this.m enuexit.Click += new System.EventHandler(this.menuexit_Click);
//
// menuview
//
this.menuview.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuToolbars});
this.menuview.Name = "menuview";
resources.ApplyResources(this.menuview, "menuview");
//
// menuToolbars
//
this.menuToolbars.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuFormatBar,
this.menuStandardBar});
this.menuToolbars.Name = "menuToolbars";
resources.ApplyResources(this.menuToolbars, "menuToolbars");
//
// menuFormatBar
//
this.menuFormatBar.Checked = true;
this.menuFormatBar.CheckOnClick = true;
this.menuF ormatBar.CheckState = System.Windows.Forms.CheckState.Checked;
this.menuFormatBar.Name = "menuFormatBar";
resources.ApplyResources(this.menuFormatBar, "menuFormatBar");
this.menuFormatBar.CheckedChanged += new System.EventHandler(this.menu_View_Toolbars_CheckedChanged);
//
// menuStandardBar
//
this.menuStandardBar.Checked = true;
this.menuStandardBar.CheckOnClick = true;
this.menuStandardBar.CheckState = System.Windows.Forms.CheckState.Checked;
this.menuStandardBar.Name = "menuStandardBar";
resources.ApplyResources(this.menuStandardBar, "menuStandardBar");
this.menuStandardBar.CheckedChanged += new System.EventHandler(this.menu_View_Toolbars_CheckedChanged);
//
// menuedit
//
this.menuedit.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuundo,
this.menuredo,
thi s.toolStripMenuItem2,
this.menucut,
this.menucopy,
this.menupaste,
this.menudelete,
this.toolStripMenuItem3,
this.menuselectAll,
this.toolStripMenuItem1,
this.menuFind});
resources.ApplyResources(this.menuedit, "menuedit");
this.menuedit.Name = "menuedit";
//
// menuundo
//
this.menuundo.Name = "menuundo";
resources.ApplyResources(this.menuundo, "menuundo");
this.menuundo.Click += new System.EventHandler(this.menuundo_Click);
//
// menuredo
//
this.menuredo.Name = "menuredo";
resources.ApplyResources(this.menuredo, "menuredo");
this.menuredo.Click += new System.EventHandler(this.menuredo_ Click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
resources.ApplyResources(this.toolStripMenuItem2, "toolStripMenuItem2");
//
// menucut
//
this.menucut.Name = "menucut";
resources.ApplyResources(this.menucut, "menucut");
this.menucut.Click += new System.EventHandler(this.menucut_Click);
//
// menucopy
//
this.menucopy.Name = "menucopy";
resources.ApplyResources(this.menucopy, "menucopy");
this.menucopy.Click += new System.EventHandler(this.menucopy_Click);
//
// menupaste
//
this.menupaste.Name = "menupaste";
resources.ApplyResources(t his.menupaste, "menupaste");
this.menupaste.Click += new System.EventHandler(this.menupaste_Click);
//
// menudelete
//
this.menudelete.Name = "menudelete";
resources.ApplyResources(this.menudelete, "menudelete");
this.menudelete.Click += new System.EventHandler(this.menudelete_Click);
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
resources.ApplyResources(this.toolStripMenuItem3, "toolStripMenuItem3");
//
// menuselectAll
//
this.menuselectAll.Name = "menuselectAll";
resources.ApplyResources(this.menuselectAll, "menuselectAll");
this.menuselectAll.Click += new System.EventHandler(this.menuselectAll_Cl ick);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolS tripMenuItem1";
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
//
// menuFind
//
this.menuFind.Name = "menuFind";
resources.ApplyResources(this.menuFind, "menuFind");
this.menuFind.Click += new System.EventHandler(this.menuFind_Click);
//
// menuformat
//
this.menuformat.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menufont,
this.menucolor,
this.menuparagraphAlignment});
resources.ApplyResources(this.menuformat, "menuformat");
this.menuformat.Name = "menuformat";
//
// menufont
//
this.menufont.Name = "menufont";
resources.ApplyResources(this.men ufont, "menufont");
this.menufont.Click += new System.EventHandler(this.menufont_Click);
//
// menucolor
//
this.menucolor.Name = "menucolor";
resources.ApplyResources(this.menucolor, "menucolor");
this.menucolor.Click += new System.EventHandler(this.menucolor_Click);
//
// menuparagraphAlignment
//
this.menuparagraphAlignment.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menualignmentLeft,
this.menualignmentRight,
this.menualignmentCenter});
this.menuparagraphAlignment.Name = "menuparagraphAlignment";
resources.ApplyResources(this.menuparagraphAlignment, "menuparagraphAlignment");
//
// menualignmentLeft
//
this.menualignmentLeft.Name = "menualignmentLeft";
resources.ApplyResources(this.menualignmentLeft, "menualignmentLeft");
this.menualignmentLeft.Click += new System.EventHandler(this.menualignmentLeft_Click);
//
// menualignmentRight
//
this.menualignmentRight.Name = "menualignmentRight";
resources.ApplyResources(this.menualignmentRight, "menualignmentRight");
this.menualignmentRight.Click += new System.EventHandler(this.menualignmentRight_Click);
//
// menualignmentCenter
//
this.menualignmentCenter.Name = "menualignmentCenter";
resources.ApplyResources(this.menualignmentCenter, "menualignmentCenter");
this.menualignmentCenter.Click += new System.EventHandler(this.menualignmentCenter_Click);
//
// menuwindow
//
this.menuwindow.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menucascade,
this.menutileHorizontal,
this.menutileVertical});
resources.ApplyResources(this.menuwindow, "menuwindow");
this.menuwindow.Name = "menuwindow";
//
// menucascade
//
this.menucascade.Name = "menucascade";
resources.ApplyResources(this.menucascade, "menucascade");
this.menucascade.Click += new System.EventHandler(this.menucascade_Click);
//
// menutileHorizontal
//
this.menutileHorizontal.Name = "menutileHorizontal";
resources.ApplyResources(this.menutileHorizontal, "menutileHorizontal");
t his.menutileHorizontal.Click += new System.EventHandler(this.menutileHorizontal_Click);
//
// menutileVerti cal
//
this.menutileVertical.Name = "menutileVertical";
resources.ApplyResources(this.menutileVertical, "menutileVertical");
this.menutileVertical.Click += new System.EventHandler(this.menutileVertical_Click);
//
// menuhelp
//
this.menuhelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuabout});
this.menuhelp.Name = "menuhelp";
resources.ApplyResources(this.menuhelp, "menuhelp");
//
// menuabout
//
this.menuabout.Name = "menuabout";
resources.ApplyResources(this.menuabout, "menuabout");
this.menuabout.Click += new System.EventHandler(this.menuabout_Click);
//
// fontDialog1
//
this.fontDialog1.ShowColor = true;
//
// colorDialog1
//
this.colorDialog1.AnyColor = true;
this.colorDialog1.SolidColorOnly = true;
//
// barStandard
//
this.barStandard.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.buttonNewTextFile,
this.buttonNewRtfFile,
this.buttonOpen,
this.buttonSave,
this.toolStripSeparator1,
this.buttonCut,
this.buttonCopy,
this.buttonPaste,
this.toolStripSeparator2,
this.buttonUndo,
this.buttonRedo,
this.toolStripSeparator3,
this.buttonFind});
resources.ApplyResources(this.barStandard, "barStandard");
this.barStandard.Name = "barStandard";
//
// buttonNewTextFile
//
this.buttonNewTextFile.Displaystyle="System.Windows.Forms.ToolStripItemDisplayStyle.Image;"
resources.ApplyResources(this.buttonNewTextFile, "buttonNewTextFile");
this.buttonNewTextFile.Name = "buttonNewTextFile";
this.buttonNewTextFile.Click += new System.EventHandler(this.menuNewRtfOrTextFile_Click);
//
// buttonNewRtfFile
//
this.buttonNewRtfFile.Displaystyle="System.Windows.Forms.ToolStripItemDisplayStyle.Image;"
resources.ApplyResources(this.buttonNewRtfFile, "buttonNewRtfFile");
this.buttonNewRtfFile.Name = "buttonNewRtfFile";
this.buttonNewRtfFile.Click += new System.EventHandler(this.menuNewRtfOrTextFile_Click);
//
// buttonOpen
//
this.but tonOpen.Displaystyle="System.Windows.Forms.ToolStripItemDisplayStyle.Image;"
resources.ApplyResources(this.buttonOpen, "buttonOpen");
this.buttonOpen.Name = "buttonOpen";
this.buttonOpen.Click += new System.EventHandler(this.menuopen_Click);
//
// buttonSave
//
this.buttonSave.Displaystyle="System.Windows.Forms.ToolStripItemDisplayStyle.Image;"
resources.ApplyResources(this.buttonSave, "buttonSave");
this.buttonSave.Name = "buttonSave";
this.buttonSave.Click += new System.EventHandler(this.menusave_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// buttonCut
//
this.buttonCut.Displaystyle="System.Windows.Forms.ToolStripItemDisplayStyle.Image;"
resources.ApplyResources(this.buttonCut, "buttonCut");
this.buttonCut.Name = "buttonCut";
this.buttonCut.Click += new System.EventHandler(this.menucut_Click);
//
// buttonCopy
//
this.buttonCopy.Displaystyle="System.Windows.Forms.ToolStripItemDisplayStyle.Image;"
resources.ApplyResources(this.buttonCopy, "buttonCopy"

Отправлен: 25.09.2009, 07:05
Вопрос задал: GudiniGarry, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Evgenijm, 10-й класс :
Здравствуйте, GudiniGarry.

Проблема в такой строчке:
Image img = new Bitmap("D:\\C#PROJ~1\\TABNOT~1.COM\\new\\TEXTED~1\\RESOUR~1\\Close.ico");

Это операция, которая выполняется самой программой, а не компилятором. Так что и на других машинах Вам придется разместить картинку под этим красивым адресом. Вариантов исправления есть много, вот 2 примера:

1) Поместить картинку в каталог программы. Путь при этом надо указывать относительно пути к программе.
Image img = new Bitmap(Application.StartupPath + "\\Close.ico");

2) Поместить картинку в ресурсы. При этом она может быть вставлена в сам файл программы. Как доставать не помню. У меня с этой техникой куча предупреждений, а то и ошибок от компилятора возникало при переносе проекта, так что я ее просто не использую.

Возможно, еще и контрол ImageList можно использовать. Им пользуются все стандартные контролы для хранения иконок. У него был какой-то метод рисующий. Карт инка тогда тоже будет храниться в самом файле.

И файл иконки у Вас читается при каждой отрисовке таба. Это не очень хорошо. Сделайте у формы поле, которое будет хранить картинку, а файл читайте в конструкторе формы. Если еще и форм много, то статическое поле и статический конструктор.

Ответ отправил: Evgenijm, 10-й класс
Ответ отправлен: 25.09.2009, 14:57

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 254675 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.9 от 25.09.2009

    В избранное