2017-01-23 3 views
0

ファイルを開く必要があるプログラムを作成しています。そのファイルの情報に応じて別のファイルを開く必要があります。私は他のファイルの名前を構成するラベルを付ける必要があります。私はラベルのテキスト部分を読み込もうとしている別のクラスを形成する。別のクラスのラベルのテキスト部分をどのように取得しますか?

私も、私は見つけることができません取り戻す保つ形

public string sendText 
{ 
    return (Label1.Text + Label2.Text); 
} 

上のクラスで

Form1 frm1 = new frm1(); 
name = (frm1.sendText + ".txt"); 

を試してみました、私は

Form1 frm1 = new frm1(); 
Name = (frm1.label1.Text + frm1.Label2.text); 

を試してみましたが、クラスで

。TXT。 私のラベルのように、テキストフィールドは空でないと空白になります。

+1

'Form1'に対して*新しいインスタンス*を作成していますが、それを表示せず、そのインスタンスに含まれている値を探しています。デフォルトでは空になります。表示している 'Form1'のインスタンスから値を取得する必要があります。 – David

+0

Form1.label1.Textと言うと、非静的なフィールド、メソッド、またはプロパティにオブジェクト参照が必要であるというエラーが表示されるため、どうすればよいですか。 – user3543447

+0

フォームが 'Form1'のフォームのインスタンスは、コードが実行されるまでに画面に表示されている必要があります。そのフォームに対処する必要があります。あなたは 'Form1'と' frm1'の両方のタイプを持っていますか? – Igor

答えて

1

Form1クラスでは、クラスの外部から両方のラベルの値を取得するためにアクセスできるパブリックプロパティを追加できます。コメントは上記の言ったように

public string LabelText 
{ 
    get { return Label1.Text + Label2.Text; } 
} 

次に、あなたの他のクラスでは、あなただけの

string name = frm1.LabelText + ".txt"; 

を使用することができ、それはForm1参照に人口のラベルを持っている同じフォームをご参照を確認することが重要です。一つの方法は、そのコンストラクタを介して、あなたの他のクラスにこの参照を渡すことです:

public class OtherClass 
{ 
    private Form1 form; 

    public OtherClass(Form1 form) 
    { 
     this.form = form; 
    } 
} 

あなたはそのような私たちが作成したプロパティとしてフォームのメンバーにアクセスするには、クラスの中から、このリファレンスを使用することができます。

+0

ありがとうございましたこれは多くの助けになりました – user3543447

関連する問題