2017-05-15 20 views
0

私は客観的なプログラミングでは新しく、ちょうど私の質問があなたの大部分のためにばかげているかもしれませんが、私は本当に必要なものを達成する方法を知りません。フォームからのアクセス制御

私はコントロールとForm1の持っている - combobox_kraje、ユーザーが国を選択してclick buttonが、ここではボタンのコードがある

enter image description here

ここ

Messagebox.Show(combobox_kraje.text)は私に、このコントロールの正しい値を示しています。

今、私は私のクラスで

enter image description here

をcombobox_krajeにアクセスしたい。ここMessagebox.Show(form.combobox_kraje.text)は私に間違った値(空のメッセージボックス)を示します。

クラスのフォームコントロールにどのようにアクセスできますか教えてください。

+0

'Public MyClass(Form1 f1){this.f1 = f1;}'のようなコンストラクタを追加すると、f1を使うことができます。また、コンボボックスの変更子をpublicに覚えています。 –

+0

'フォーム'とは何ですか?それをどのように初期化/割り当てますか? –

+0

@LeiYangコンボボックスは公開済みです。 – JustSomeNewbie

答えて

1

外部にアクセスできるようにするために何かを公に設定するのは良い考えではないし、少なくともここではこれを行うより良いアプローチがある。今form.TheMessageText経由でアクセス

public class MyForm : Form 
{ 
    public string TheMessageText { return this.combobox_kraje.Text; } 
} 

:ちょうどcombonboxesテキスト値を返しますフォームにプロパティを追加します。このようにして、実際のコントロールprivateを残して、コントロール全体ではなく関連する部分のみを外部に提供することができます。

0

form(これはnew Form1()で初期化されています)を使用していますが、表示されているインスタンスではありません。

あなたがクラスに示されているインスタンスを渡して、代わりにformに割り当てる必要があります。@HimBromBeereが述べたように、あなたはテキスト、それが自己を公開するプロパティを追加し、代わりに使用する必要があります。また

public MyClass(Form1 form1) 
{ 
    this.form = form1; 
} 

を公共のコントロール。

関連する問題