Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет stden ([info]stden)
@ 2006-12-27 18:33:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Простенький текстовый редактор типа Notepad на C#

using System;
using System.ComponentModel;
using System.Drawing;
using System.Resources;
using System.Windows.Forms;

namespace Editor
{
/// <summary>
/// Мой редактор типа Блокнота
/// </summary>
public class Редактор : Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private Container components;

private ColorDialog ДиалогВыбораЦвета;
private FontDialog ДиалогВыборШрифта;
private SaveFileDialog ДиалогСохранить;
private OpenFileDialog ДиалогОткрытьФайл;
private MainMenu ГлавноеМеню;
private MenuItem ПунктМенюПереносСлов;
private RichTextBox Текст;

private string _filename = "";

private string filename
{
get { return _filename; }
set
{
_filename = value;
Text = value;
}
}


public Редактор()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
ResourceManager resources = new ResourceManager(typeof(Редактор));
components = new Container();
ДиалогВыборШрифта = new FontDialog();
Текст = new RichTextBox();
ДиалогОткрытьФайл = new OpenFileDialog();
MenuItem ПунктМенюФормат = new MenuItem();
MenuItem ПунктМенюПомощь = new MenuItem();
ГлавноеМеню = new MainMenu();

ДиалогВыбораЦвета = new ColorDialog();
ДиалогСохранить = new SaveFileDialog();

Текст.AutoWordSelection = true;
Текст.Size = new Size(336, 312);
Текст.TabIndex = 1;
Текст.ScrollBars = RichTextBoxScrollBars.ForcedBoth;
Текст.Font = new Font("Arial", 10, FontStyle.Bold);

ДиалогОткрытьФайл.Filter = "Текстовый файл|*.txt";
ДиалогОткрытьФайл.ReadOnlyChecked = true;
ДиалогОткрытьФайл.DefaultExt = "txt";
ДиалогОткрытьФайл.Multiselect = true;

ПунктМенюПереносСлов = new MenuItem("Перенос по словам", new EventHandler(ПереносСлов));

ПунктМенюПомощь = new MenuItem(
"Помощь",
new MenuItem[]
{
new MenuItem("О программе", new EventHandler(ОПрограмме))
}
);

ГлавноеМеню.MenuItems.AddRange(
new MenuItem[]{
new MenuItem(
"&Файл",
new MenuItem[]
{
new MenuItem("Создать", new EventHandler(СоздатьНовыйФайл), Shortcut.CtrlN),
new MenuItem("Открыть...", new EventHandler(ОткрытьФайл), Shortcut.CtrlO), 
new MenuItem("Сохранить", new EventHandler(СохранитьФайл), Shortcut.CtrlS),
new MenuItem("Сохранить как...", new EventHandler(СохранитьКак)), 
new MenuItem("-"), 
new MenuItem("Выход", new EventHandler(ВыходИзПрограммы) )
}
),
new MenuItem(
"&Правка",
new MenuItem[]
{
new MenuItem("Отменить", new EventHandler(Отменить), Shortcut.CtrlZ),
new MenuItem("Вернуть", new EventHandler(Вернуть)),
new MenuItem("-"),
new MenuItem("Вырезать", new EventHandler(Вырезать), Shortcut.CtrlX),
new MenuItem("&Копировать", new EventHandler(Копировать), Shortcut.CtrlC),
new MenuItem("Вставить", new EventHandler(Вставить), Shortcut.CtrlV), 
new MenuItem("Удалить", new EventHandler(Удалить), Shortcut.Del), 
new MenuItem("-"), 
new MenuItem("Найти...", new EventHandler(Найти), Shortcut.CtrlF), 
new MenuItem("Найти далее", new EventHandler(НайтиДалее), Shortcut.F3), 
new MenuItem("Заменить...", new EventHandler(Заменить), Shortcut.CtrlH), 
new MenuItem("Перейти...", new EventHandler(Перейти), Shortcut.CtrlG), 
new MenuItem("-"), 
new MenuItem("В&ыделить все", new EventHandler(ВыделитьВсе), Shortcut.CtrlA),
new MenuItem("Время и дата", new EventHandler(ВставкаВремениИДаты), Shortcut.F5)
}), 
new MenuItem(
"Формат",
new MenuItem[]
{
ПунктМенюПереносСлов, 
new MenuItem("Шрифт", new EventHandler(ВыборШрифта) ),
new MenuItem("Цвет", new EventHandler(ВыборЦвета) ) 
}),

ПунктМенюПомощь
});

ДиалогСохранить.Filter = "Текстовый файл|*.txt";
ДиалогСохранить.InitialDirectory = System.IO.Directory.GetCurrentDirectory(); // System.IO.Path.GetDirectoryName("");
ДиалогСохранить.DefaultExt = "txt";
ДиалогСохранить.FileName = "Untitled";
ДиалогСохранить.CheckFileExists = true;

Text = "Мой редактор";
AutoScaleBaseSize = new Size(5, 13);
Menu = ГлавноеМеню;
ClientSize = new Size(344, 317);
Resize += new EventHandler(rs);
Controls.Add(Текст);
}

private void Перейти(object sender, EventArgs e)
{
throw new NotImplementedException();
}

private void Заменить(object sender, EventArgs e)
{
throw new NotImplementedException();
}

private void НайтиДалее(object sender, EventArgs e)
{
throw new NotImplementedException();
}

private void Найти(object sender, EventArgs e)
{
throw new NotImplementedException();
}

private void Удалить(object sender, EventArgs e)
{
if (Текст.SelectedText.Equals("")) return;
Текст.SelectedText = "";
}

protected void ОПрограмме(object sender, EventArgs e)
{
MessageBox.Show("Просто текстовый редактор, версия такая-то...", "О программе", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}

protected void ПереносСлов(object sender, EventArgs e)
{
ПунктМенюПереносСлов.Checked = !ПунктМенюПереносСлов.Checked;
Текст.WordWrap = ПунктМенюПереносСлов.Checked;
}

protected void ВыборЦвета(object sender, EventArgs e)
{
ДиалогВыбораЦвета.ShowDialog();
Текст.SelectionColor = ДиалогВыбораЦвета.Color;
}

protected void ВыборШрифта(object sender, EventArgs e)
{
ДиалогВыборШрифта.ShowDialog();
Текст.SelectionFont = ДиалогВыборШрифта.Font;
}

protected void ВставкаВремениИДаты(object sender, EventArgs e)
{
Текст.SelectedText = DateTime.Now.ToString();
}

protected void ВыделитьВсе(object sender, EventArgs e)
{
Текст.SelectAll();
}

protected void Вставить(object sender, EventArgs e)
{
DataObject Data = (DataObject)Clipboard.GetDataObject();
Текст.SelectedText = (string)Data.GetData(DataFormats.Text);
}

protected void Копировать(object sender, EventArgs e)
{
if (Текст.SelectedText.Equals("")) return;
Clipboard.SetDataObject(Текст.SelectedText, true);
}

protected void Вырезать(object sender, EventArgs e)
{
if (Текст.SelectedText.Equals("")) return;
Clipboard.SetDataObject(Текст.SelectedText, true);
Текст.SelectedText = "";
}

protected void Вернуть(object sender, EventArgs e)
{
Текст.Redo();
}

protected void Отменить(object sender, EventArgs e)
{
Текст.Undo();
}

protected void СохранитьФайл(object sender, EventArgs e)
{
if (filename.Equals(""))
{
ДиалогСохранить.ShowDialog();
if (!ДиалогСохранить.FileName.Equals(""))
{
filename = ДиалогСохранить.FileName;
}
}
Текст.SaveFile(filename, RichTextBoxStreamType.PlainText);
Text = filename;
}

protected void СохранитьКак(object sender, EventArgs e)
{
ДиалогСохранить.ShowDialog();
if (!ДиалогСохранить.FileName.Equals(""))
{
filename = ДиалогСохранить.FileName;
Текст.SaveFile(filename, RichTextBoxStreamType.PlainText);
Text = filename;
}
}

protected void СоздатьНовыйФайл(object sender, EventArgs e)
{
Текст.Clear();
}

protected void ОткрытьФайл(object sender, EventArgs e)
{
ДиалогОткрытьФайл.ShowDialog();
filename = ДиалогОткрытьФайл.FileName;
if (!filename.Equals(""))
{
Текст.LoadFile(filename, RichTextBoxStreamType.PlainText);
Text = filename;
}
}

protected void rs(object sender, EventArgs e)
{
Текст.Size = Size;
}

private void ВыходИзПрограммы(object sender, EventArgs e)
{
Close();
}

[STAThreadAttribute]
public static void Main(string[] args)
{
Application.Run(new Редактор());
}
}
}


(Добавить комментарий)


(Анонимно)
2008-10-06 21:00 (ссылка)
Спасибо , очень помогло

(Ответить)


[info]potroshetel
2008-12-20 20:42 (ссылка)
А можешь выложить в инет и дать ссылку?

(Ответить) (Ветвь дискуссии)


[info]stden
2010-06-01 14:21 (ссылка)
Могу выложить в SVN, подойдёт?

(Ответить) (Уровень выше)


(Анонимно)
2010-06-01 08:57 (ссылка)
Привет! Вы не могли бы отправить фовму этого блокнота?!)))))))

(Ответить) (Ветвь дискуссии)


[info]stden
2010-06-01 14:19 (ссылка)
А зачем тут форма? Тут все контролы прямо из кода создаются!

(Ответить) (Уровень выше)


(Анонимно)
2010-06-01 09:29 (ссылка)
Добрый день!!! Вы не могли бы отправить ФОРМУ блокнотика?

(Ответить) (Ветвь дискуссии)


[info]stden
2010-06-01 14:17 (ссылка)
А зачем тут форма? Тут все контролы прямо из кода создаются?
Обычно метод InitializeComponent генерируется редактором форм, а тут он доработан "вручную".

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2010-06-01 19:06 (ссылка)
Просто у нас по вашему коду некоторые не выходят(например, как "найти, заменить, перейти"). Вот по этому мы просили ФОРМУ отправить. Мы не поняли, как вы без формы делали? И вы не могли бы отправить код ссылки "ПЕЧАТЬ"?

(Ответить) (Уровень выше)