2017-02-24 34 views
1

我有一個加載按鈕,用於加載文件並調用第二個窗體。在第二種形式我已經有給我從打開的文件文本一個RichTextBox,但它並沒有顯示什麼,這裏是我已經嘗試過(我做了richTextBox1公衆有機會獲得它)在第一個窗體上在richTextBox中顯示文本

private void btnLoad_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog ofd = new OpenFileDialog(); 

     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      FormEditor f2 = new FormEditor(); 
      f2.ShowDialog(); 
      using (System.IO.StreamReader sr = new System.IO.StreamReader(ofd.FileName)) 
      { 
       f2.richTextBox1.Text = sr.ReadToEnd(); 
      } 
     } 

    } 

如果我嘗試使用相同的代碼將richTextBox放入第一種形式,

+0

的ShowDialog()停止代碼,直到對話框關閉,所以你不要寫任何東西。使用Show()或將文件名作爲參數傳遞給FormEditor並以此形式獲取它 – EpicKip

回答

2

當您打開f2f2.ShowDialog()),填補RichTextBox的代碼沒有被執行,那麼你會得到f2一個空的文本框(ShowDialog()後的代碼,因爲你關閉f2,將立即執行)。請嘗試:

FormEditor f2 = new FormEditor(); 
using (System.IO.StreamReader sr = new System.IO.StreamReader(ofd.FileName)) 
{ 
    f2.richTextBox1.Text = sr.ReadToEnd(); 
} 
f2.ShowDialog(); 
2

FormEditor應負責顯示文本,而不是當前表單。 使用FormEditor的參數編寫構造函數並將文本傳遞給它,然後將其保存在變量中並在表單加載的RichTextBox中顯示它。

你FormEditor類應該是這樣的:

private string textForEdit{get;set;} 
public FormEditor(string txt) 
{ 
    textForEdit = txt; 
} 

private void FormEditor_load(object sender, EventArgs e) 
{ 
    richTextBox1.Text = textForEdit; 
} 

然後,改變你的if塊內,以這樣的:

using (System.IO.StreamReader sr = new System.IO.StreamReader(ofd.FileName)) 
{ 
    FormEditor f2 = new FormEditor(sr.ReadToEnd()); 
    f2.ShowDialog(); 
} 
相關問題