前田稔(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