home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Edit List and Spin / NotepadCloneWithFormat / NotepadCloneWithFormat.cs next >
Encoding:
Text File  |  2001-01-15  |  4.1 KB  |  147 lines

  1. //-----------------------------------------------------
  2. // NotepadCloneWithFormat.cs ⌐ 2001 by Charles Petzold
  3. //-----------------------------------------------------
  4. using Microsoft.Win32;
  5. using System;
  6. using System.Drawing;
  7. using System.Windows.Forms;
  8.  
  9. class NotepadCloneWithFormat: NotepadCloneWithEdit
  10. {
  11.     // Strings for registry
  12.  
  13.     const string strWordWrap  = "WordWrap";
  14.     const string strFontFace  = "FontFace";
  15.     const string strFontSize  = "FontSize";
  16.     const string strFontStyle = "FontStyle";
  17.     const string strForeColor = "ForeColor";
  18.     const string strBackColor = "BackColor";
  19.     const string strCustomClr = "CustomColor";
  20.  
  21.     ColorDialog clrdlg = new ColorDialog();
  22.     MenuItem    miFormatWrap;
  23.  
  24.     public new static void Main()
  25.     {
  26.         Application.Run(new NotepadCloneWithFormat());
  27.     }
  28.     public NotepadCloneWithFormat()
  29.     {
  30.         strProgName = "Notepad Clone with Format";
  31.         MakeCaption();
  32.  
  33.         // Format
  34.  
  35.         MenuItem mi = new MenuItem("F&ormat");
  36.         mi.Popup += new EventHandler(MenuFormatOnPopup);
  37.         Menu.MenuItems.Add(mi);
  38.         int index = Menu.MenuItems.Count - 1;
  39.  
  40.         // Format Word Wrap
  41.  
  42.         miFormatWrap = new MenuItem("&Word Wrap");
  43.         miFormatWrap.Click += new EventHandler(MenuFormatWrapOnClick);
  44.         Menu.MenuItems[index].MenuItems.Add(miFormatWrap);
  45.  
  46.         // Format Font
  47.  
  48.         mi = new MenuItem("&Font...");
  49.         mi.Click += new EventHandler(MenuFormatFontOnClick);
  50.         Menu.MenuItems[index].MenuItems.Add(mi);
  51.  
  52.         // Format Background Color
  53.  
  54.         mi = new MenuItem("Background &Color...");
  55.         mi.Click += new EventHandler(MenuFormatColorOnClick);
  56.         Menu.MenuItems[index].MenuItems.Add(mi);
  57.     }
  58.     protected override void OnLoad(EventArgs ea)
  59.     {
  60.         base.OnLoad(ea);
  61.  
  62.         // Help
  63.  
  64.         MenuItem mi = new MenuItem("&Help");
  65.         Menu.MenuItems.Add(mi);
  66.         int index = Menu.MenuItems.Count - 1;
  67.  
  68.         // Help About
  69.  
  70.         mi = new MenuItem("&About " + strProgName + "...");
  71.         mi.Click += new EventHandler(MenuHelpAboutOnClick);
  72.         Menu.MenuItems[index].MenuItems.Add(mi);
  73.     }
  74.     void MenuFormatOnPopup(object obj, EventArgs ea)
  75.     {
  76.         miFormatWrap.Checked = txtbox.WordWrap;
  77.     }
  78.     void MenuFormatWrapOnClick(object obj, EventArgs ea)
  79.     {
  80.         MenuItem mi = (MenuItem) obj;
  81.         mi.Checked ^= true;
  82.         txtbox.WordWrap = mi.Checked;
  83.     }
  84.     void MenuFormatFontOnClick(object obj, EventArgs ea)
  85.     {
  86.         FontDialog fontdlg = new FontDialog();
  87.  
  88.         fontdlg.ShowColor = true;
  89.         fontdlg.Font = txtbox.Font;
  90.         fontdlg.Color = txtbox.ForeColor;
  91.  
  92.         if (fontdlg.ShowDialog() == DialogResult.OK)
  93.         {
  94.             txtbox.Font = fontdlg.Font;
  95.             txtbox.ForeColor = fontdlg.Color;
  96.         }
  97.     }
  98.     void MenuFormatColorOnClick(object obj, EventArgs ea)
  99.     {
  100.         clrdlg.Color = txtbox.BackColor;
  101.  
  102.         if (clrdlg.ShowDialog() == DialogResult.OK)
  103.             txtbox.BackColor = clrdlg.Color;
  104.     }
  105.     void MenuHelpAboutOnClick(object obj, EventArgs ea)
  106.     {
  107.         MessageBox.Show(strProgName + " ⌐ 2001 by Charles Petzold", 
  108.             strProgName);
  109.     }
  110.     protected override void LoadRegistryInfo(RegistryKey regkey)
  111.     {
  112.         base.LoadRegistryInfo(regkey);
  113.  
  114.         txtbox.WordWrap = Convert.ToBoolean(
  115.             (int) regkey.GetValue(strWordWrap));
  116.         txtbox.Font = new Font((string) regkey.GetValue(strFontFace),
  117.             float.Parse(
  118.             (string) regkey.GetValue(strFontSize)),
  119.             (FontStyle) regkey.GetValue(strFontStyle));
  120.         txtbox.ForeColor = Color.FromArgb(
  121.             (int) regkey.GetValue(strForeColor));
  122.         txtbox.BackColor = Color.FromArgb(
  123.             (int) regkey.GetValue(strBackColor));
  124.           
  125.         int[] aiColors = new int[16];
  126.  
  127.         for (int i = 0; i < 16; i++)
  128.             aiColors[i] = (int) regkey.GetValue(strCustomClr + i);
  129.  
  130.         clrdlg.CustomColors = aiColors;
  131.     }
  132.     protected override void SaveRegistryInfo(RegistryKey regkey)
  133.     {
  134.         base.SaveRegistryInfo(regkey);
  135.  
  136.         regkey.SetValue(strWordWrap,  Convert.ToInt32(txtbox.WordWrap));
  137.         regkey.SetValue(strFontFace,  txtbox.Font.Name);
  138.         regkey.SetValue(strFontSize,  txtbox.Font.SizeInPoints.ToString());
  139.         regkey.SetValue(strFontStyle, (int) txtbox.Font.Style);
  140.         regkey.SetValue(strForeColor, txtbox.ForeColor.ToArgb());
  141.         regkey.SetValue(strBackColor, txtbox.BackColor.ToArgb());
  142.  
  143.         for (int i = 0; i < 16; i++)
  144.             regkey.SetValue(strCustomClr + i, clrdlg.CustomColors[i]);
  145.     }
  146. }          
  147.