2017-02-18 11 views
1

私はC#コーディングの初心者です。私は、文字列str1の値を別のフォームに渡し、下のコードから別のウィンドウフォームに表示する方法を知りたかったのです。メッセージボックスに「MessageBox.Show(str1);」と表示することができますしかし、私はstr1の値を渡して別の形式で表示したいです。結果を別のフォームに表示する方法は?

enter code here 

<pre> <code> 

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Reflection; 
using System.Text; 
using System.Threading.Tasks; 
using System.Runtime.InteropServices; 
using MyExcel = Microsoft.Office.Interop.Excel; 
using System.Windows.Forms; 
using static System.Windows.Forms.VisualStyles.VisualStyleElement; 
using Microsoft.Vbe.Interop; 
using System.Diagnostics; 

名前空間ローン {

public partial class Form1 : Form 
{ 
    public Form1() 
    { 

     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 




     OpenFileDialog fdlg = new OpenFileDialog(); 
     fdlg.Title = "Select an Excel File"; 
     fdlg.InitialDirectory = @"d:\test"; 
     fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"; 
     fdlg.FilterIndex = 2; 
     fdlg.RestoreDirectory = true; 





     if (fdlg.ShowDialog() == DialogResult.OK) 
     { 
      MessageBox.Show("selected file is :" + fdlg.FileName); 

     } 

     MyExcel.Application xlApp; 
     MyExcel.Workbook xlWorkBook; 
     MyExcel.Worksheet xlWorkSheet; 
     MyExcel.Range range; 

     string cellValue; 
     int rCnt; 
     int cCnt; 
     int rw = 0; 
     int cl = 0; 

     Loans.Form2 frm = new Loans.Form2(); 


     xlApp = new MyExcel.Application(); 
     xlWorkBook = xlApp.Workbooks.Open(@fdlg.FileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
     xlWorkSheet = (MyExcel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

     range = xlWorkSheet.UsedRange; 
     rw = range.Rows.Count; 
     cl = range.Columns.Count; 

     //MessageBox.Show("Working"); 
     for (rCnt = 1; rCnt <= rw; rCnt++) 
     { 
      for (cCnt = 1; cCnt <= cl; cCnt++) 
      { 

       string str = Convert.ToString((range.Cells[rCnt, "N"] as MyExcel.Range).Value2); 

       if (str == "3" || str == "4" || str == "5" || str == "6" || str == "7") 
       { 
        string str1 = Convert.ToString((range.Cells[rCnt, cCnt] as MyExcel.Range).Value2); 
        MessageBox.Show(str1); //want to display the values 
              //of str1 in a seperate form 


       } 


      } 
     } 



     xlWorkBook.Close(true, null, null); 
     xlApp.Quit(); 

     Marshal.ReleaseComObject(xlWorkSheet); 
     Marshal.ReleaseComObject(xlWorkBook); 
     Marshal.ReleaseComObject(xlApp); 

    } 

    public void Show(string text) 
    { 

     this.Show(); 
    } 




    private void Form1_Load(object sender, EventArgs e) 
    { 
     InitializeComponent(); 
    } 


} 

}

答えて

1

良い解決策は、2番目のフォームのコンストラクタで文字列を送信することです。また、あなたはあなたの第二の形式でラベルを置くことができるし、そのラベル内の文字列を保存するには:

public partial class Form2 : Form 
{ 
    private string _stringToShow; 
    public Form2(string stringToShow) 
    { 
     _stringToShow = stringToShow; 
     InitializeComponent(); 
    } 

    private void Form2_Load(object sender, EventArgs e) 
    { 
     label1.Text = _stringToShow; 
    } 
} 

そして、私は二番目の形式と呼ばれる最初のフォームから:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     List<string> Ll = new List<string>() { "one", "two", "three" }; 
     string concatenate = string.Join(" ", Ll.ToArray()); 
     new Form2(concatenate).Show(); 
    } 
} 

はそれがお役に立てば幸いです。

+0

ありがとうございます。私はそれを試してみましたが、私はエラーを受け取りました - > 'System.Collections.Generic.List 'から 'string'に変換できません –

+0

あなたはどの値を送っていますか?リストと文字列の間で変換が悪いようです。最初のウィンドウのコードもこのソリューションに追加しました。 –

+0

Excelのファイルからセルの値を取得して、文字列リストに格納しています。今私は2番目の形式で取得された値を表示する。私はテキストボックスを使用していません。 –

-1

あなたはあなたの最初のフォームに設定され、2番目のフォーム上の変数を宣言することができます。

あなたにこれを追加します。第2の形式(メッセージを受け取る形式)

public string strVariable { get; set; } 

は、その後、あなたの最初のフォームに、それを示す前に、変数を宣言:

第二の形式(受信機)の搭載、あなたは、この場合には、データにアクセスし、ユーザーにそれを表示することができたら
Form2 frm = new Form2(); 
    frm.strVariable = "Hello World"; 
    frm.Show(); 

フォームロード時などのラベル:

private void Form2_Load(object sender, EventArgs e) 
    { 
     label1.Text = strVariable; 
    } 
関連する問題