2017-10-15 5 views
2

選択したファイルを読み込んでTextBoxに表示するWinFormを作成しようとしています。私の問題は、他のイベントハンドラがオブジェクトにアクセスすることです。私は基本的に私のファイル名が選択をクリックした後にTextBoxに表示されたいが、私はファイルの内容が開いているボタンをクリックした後に別のテキストボックスに入るようにしたい。選択ボタンの中にオブジェクトを置くとファイル名が表示されますが、開いたボタンに入れようとするとそのコンテンツにもう一度アクセスすることはできません。あなたは既にbtnSelect_Clickハンドラ内のFileDialogを開設しておりますので、私はC#winforms異なるイベントハンドラ内の同じオブジェクトにアクセスする方法

public partial class xmlForm : Form 
{ 
    OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

    public xmlForm() 
    { 
     InitializeComponent(); 
    } 

    public void btnSelect_Click(object sender, System.EventArgs e) 
    { 
     // Displays an OpenFileDialog so the user can select a Cursor. 
     // OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     openFileDialog1.Filter = "XML files|*.xml"; 
     openFileDialog1.Title = "Select a XML File"; 

     // Show the Dialog. 
     // If the user clicked OK in the dialog and 
     // a .xml file was selected, open it. 
     if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      displayBox.Text = openFileDialog1.FileName; 
      var onlyFileName = System.IO.Path.GetFileName(openFileDialog1.FileName); 
      displayBox.Text = onlyFileName; 

      /* Button btn = sender as Button; 
      if (btn != null) 
      { 
       if (btn == opnButton) 
       { 
        string s = System.IO.File.ReadAllText(openFileDialog1.FileName); 
        fileBox.Text = s; 
       } 
      }*/ 
      /* if (opnButtonWasClicked) 
      { 
       string s = System.IO.File.ReadAllText(openFileDialog1.FileName); 
       fileBox.Text = s; 
       opnButtonWasClicked = false; 
      } */ 
     } 

     /*string s = System.IO.File.ReadAllText(openFileDialog1.FileName); 
     fileBox.Text = s; */ 
    } 

    public void opnButton_Click(object sender, EventArgs e) 
    { 
     string s = System.IO.File.ReadAllText(openFileDialog1.FileName); 
     fileBox.Text = s; 

     /*if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      Button btn = sender as Button; 
      if (btn != null) 
      { 
       if (btn == opnButton) 
       { 
        string s = System.IO.File.ReadAllText(openFileDialog1.FileName); 
        fileBox.Text = s; 
       } 
       else { } 
      } 
     }*/ 
    } 
} 
+1

はまた、あなたが 'System.IO.File.ReadAllText(openFileDialog1.FileName)を変更することができます;' 'System.IO.File.ReadAllText(displayBox.Text)に;' –

答えて

1

をしようとしたことを私はコメントアウトすべて私のものを見ることができます。したがって、これを閉じる前に既に開いているダイアログを開くことはできません。したがって、ダイアログをもう一度開くには、前に閉じておく必要があります。あなたが閉じた後に再びダイアログを開く必要はありません目的を果たすために、

string s=System.IO.File.ReadAllText(openFileDialog1.FileName); 
fileBox.Text = s; 

しかし、あなたの場合:そして、あなたは、以下のステートメントを使用することもできました。ですから、ファイル名が既に入っているテキストフィールドとして、opnButton_Clickハンドラ内のReadAllTextメソッドのパラメータとしてdisplayBox.Textを渡してください。

string System.IO.File.ReadAllText(displayBox.Text); 
fileBox.Text = s; 

おかげ

+0

はありがとうあなたの助けに。 – Sayid

関連する問題