前田稔(Maeda Minoru)の超初心者のプログラム入門
// tabPage1 this.tabPage1.Controls.Add(this.richTextBox1); this.tabPage1.Size = new System.Drawing.Size(768, 342); // richTextBox1 this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBox1.Location = new System.Drawing.Point(3, 3); |
// tabPage1 this.tabPage1.Size = new System.Drawing.Size(768, 0); // richTextBox1 this.richTextBox1.Location = new System.Drawing.Point(20, 120); this.richTextBox1.Size = new System.Drawing.Size(800, 200); // Form1 this.Controls.Add(this.richTextBox1); this.Controls.Add(this.tabControl1); |
this.Resize += new System.EventHandler(this.formResize); private void formResize(object sender, EventArgs e) { richTextBox1.Left = 4; richTextBox1.Top = 46; richTextBox1.Width = this.Width - 24; richTextBox1.Height = this.Height - 90; } |
ArrayList m_page; // 編集ファイルの配列 int m_num; // 現在編集中の m_page(初期値 -1) |
m_page = new ArrayList(); m_num = -1; |
private void LoadFile(string tpath, string tcode) { if (!File.Exists(tpath)) { Console.WriteLine("File NotFound: " + tpath); return; } m_szDir = tpath; this.Text = m_szDir; m_fclass = new FileClass(tpath, tcode); m_fclass.ReadFile(); m_fclass.Load(richTextBox1); m_flag = false; m_page.Add(m_fclass); if (tabControl1.TabPages.Count < m_page.Count) { // TABControl1 にファイル名を追加 TabPage tab = new TabPage(m_fclass.file); tabControl1.TabPages.Add(tab); } else tabControl1.GetControl(m_page.Count - 1).Text = m_fclass.file; m_num = m_page.Count - 1; tabControl1.SelectTab(m_num); } |
private void tabSelected(object sender, TabControlEventArgs e) { if (m_page.Count == 0) { richTextBox1.Clear(); return; } m_num = e.TabPageIndex; if (m_num >= m_page.Count) return; m_fclass = (FileClass)m_page[m_num]; m_fclass.Load(richTextBox1); } |
public class FileName { public string path; //ファイルパス public string code; //TEXTコード public int num; //TabPage 番号 public int cursor; //カーソル位置 // Constructor public FileName(string tpath, string tcode, int p) { path = tpath; code = tcode; cursor = p; num = 0; } public FileName(int n, int p) { path = string.Empty; code = string.Empty; num = n; cursor = p; } } |
FileName[] m_CurPos = new FileName[4]; |
case Keys.F1: //F1~F4 カーソル位置を記憶 m_CurPos[0] = new FileName(m_num, wp); break; case Keys.F2: m_CurPos[1] = new FileName(m_num, wp); break; case Keys.F3: m_CurPos[2] = new FileName(m_num, wp); break; case Keys.F4: m_CurPos[3] = new FileName(m_num, wp); break; |
case Keys.F1: //カーソル位置にジャンプ PageChenge(m_CurPos[0].num, m_CurPos[0].cursor); break; case Keys.F2: PageChenge(m_CurPos[1].num, m_CurPos[1].cursor); break; case Keys.F3: PageChenge(m_CurPos[2].num, m_CurPos[2].cursor); break; case Keys.F4: PageChenge(m_CurPos[3].num, m_CurPos[3].cursor); break; |
private void PageChenge(int newpage, int cursor) { if (m_page.Count == 0) { richTextBox1.Clear(); return; } if (newpage!=m_num) //ページが異なるとき { //現在ページを保存 if (m_num>=0 && m_num<m_page.Count) { m_fclass.Save(richTextBox1); m_fclass.cursor = richTextBox1.SelectionStart; m_page[m_num] = m_fclass; } //m_page[newpage]をロード m_num = newpage; if (m_num<0 || m_num>=m_page.Count) m_num = 0; m_fclass = (FileClass)m_page[m_num]; m_fclass.Load(richTextBox1); tabControl1.SelectTab(m_num); } if (cursor>0) m_fclass.cursor = cursor; this.Text = m_fclass.path; SetCurPos(m_fclass.cursor); } |
private void SetCurPos(int cur) { int pos, wk; pos = cur; if (pos<0) pos = 0; wk = richTextBox1.GetLineFromCharIndex(pos); wk = richTextBox1.GetFirstCharIndexFromLine(wk); richTextBox1.Select(wk,0); richTextBox1.Focus(); richTextBox1.ScrollToCaret(); } |
private void tabSelected(object sender, TabControlEventArgs e) { if (m_page.Count==0) { richTextBox1.Clear(); return; } if (e.TabPageIndex>=m_page.Count) return; PageChenge(e.TabPageIndex, -1); } |
[Next Chapter ↓] FileClass
[Previous Chapter ↑] Single File Editor