読者です 読者をやめる 読者になる 読者になる

6日間で文献管理アプリを作る(6日目)

article_formに関して

  • まずは以下の変数を定義する
        public FileInfo file_info;      //選択しているXMLファイルの情報
        public int article_number2;     //文献数(Form1から受け取る)
        public string[] article_array2; //PMIDの配列(Form1から受け取る)
        int current_no;                 //PMID配列の何番目か?
        string pdffile;                 //PDFファイルのパス
  • 次に以下のような「article-form_reload.cs」を追加する
using System.Windows.Forms;
using System.IO;

namespace 文献管理
{
    public partial class article_form
    {
        void form_reload()
        {
            string txfile = file_info.DirectoryName + "/" + toolStripStatusLabel1.Text + ".txt";
            pdffile = file_info.DirectoryName + "/" + toolStripStatusLabel1.Text + ".pdf";
            if (File.Exists(txfile))
            {
                StreamReader sr = new StreamReader(txfile, System.Text.Encoding.Default);
                textBox1.Text = sr.ReadToEnd();
                sr.Close();
            }
            else
            {
                textBox1.Text = "";
            }
            pdf.Enabled = File.Exists(pdffile);
        }
    }
}
        private void article_form_Load(object sender, EventArgs e)
        {
            form_reload();
            current_no = Array.IndexOf(article_array2, toolStripStatusLabel1.Text);
        }
        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            if(e.Url.Scheme=="about")
            {
                e.Cancel = true;
                article_form f = new article_form();
                f.file_info = new FileInfo(choose_file);
                f.article_array2 = article_array;
                f.article_number2 = article_number;
                f.toolStripStatusLabel1.Text = e.Url.LocalPath;
                f.ShowDialog(this);
            }
        }
  • PubMed」ボタン、「PDF」ボタンを定義する
        private void pubmed_Click(object sender, EventArgs e)
        {
            Process.Start("http://www.ncbi.nlm.nih.gov/pubmed/" + toolStripStatusLabel1.Text);
        }

        private void pdf_Click(object sender, EventArgs e)
        {
            Process.Start(pdffile);
        }
  • 「|<<」「<」「>」「>>|」ボタンを定義する
        private void first_Click(object sender, EventArgs e)
        {
            current_no = 0;
            toolStripStatusLabel1.Text = article_array2[current_no];
            form_reload();
        }

        private void last_Click(object sender, EventArgs e)
        {
            current_no = article_number2 - 1;
            toolStripStatusLabel1.Text = article_array2[current_no];
            form_reload();
        }

        private void down_Click(object sender, EventArgs e)
        {
            current_no--;
            if (current_no > -1)
            {
                toolStripStatusLabel1.Text = article_array2[current_no];
                form_reload();
            }
            else
            {
                current_no = 0;
            }
        }

        private void up_Click(object sender, EventArgs e)
        {
            current_no++;
            if (current_no < article_number2)
            {
                toolStripStatusLabel1.Text = article_array2[current_no];
                form_reload();
            }
            else
            {
                current_no = article_number2 - 1;
            }
        }
  • メニュー「文字サイズ」を定義する
        private void 大ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            大ToolStripMenuItem.Checked = true;ToolStripMenuItem.Checked = false;ToolStripMenuItem.Checked = false;
            textBox1.Font = new Font("MS UI Gothic", 20);
        }

        private void 中ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            大ToolStripMenuItem.Checked = false;ToolStripMenuItem.Checked = true;ToolStripMenuItem.Checked = false;
            textBox1.Font = new Font("MS UI Gothic", 16);
        }

        private void 小ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            大ToolStripMenuItem.Checked = false;ToolStripMenuItem.Checked = false;ToolStripMenuItem.Checked = true;
            textBox1.Font = new Font("MS UI Gothic", 12);
        }