2012-01-08 19 views
0

私はC#の使い方がとても新しいです。 Javaで書かれたロボットプログラムKarolについて聞いたことがあるなら、それが私が目指しているものです。フォームオブジェクトのプロパティを別のクラスから変更する

しかし、私はほとんど最初のハードルを見つけていないので、32x32の四角形のブロックで画面を移動できるKarol(これは単なる画像です)のクラスを作りたいと思います。

問題は、フォームオブジェクトのプロパティにアクセスすることができないクラスを作成する際に、別のものであるためです。

フォームオブジェクトをクラスから操作できますが、そのメソッドを使用するたびにメソッドを渡す必要はありません。

ご迷惑をおかけして申し訳ありません。

答えて

1

Formの参照をすべて時間に渡す必要はありません。それは

public Label MyFormLabel {....}

など、自分自身を公開するかを制御する必要がForm内の制御データをアクセスもする

`public class Karol 

    { 

private Form _form=null; 

public Karol(Form frm) { 

     _form = frm; 
} 

// after use _form inside the functions and  properties of the class, where needed 

}` 

編集

:このような何かを行うのに十分でなければなりませんコントロールからデータを取得または取得する関数/プロパティを公開します。私はあなたのソリューションが動作するように取得することができます

public string MyFormLabelText { get{ return label.Text;} set{label.Text = value;}}

+0

アイデアありがとう。しかし、それを動作させることはできません。 Main()のフォームをinstansiateするとき、私はKarol Karol =新しいKarol(これ)を使用しています。そしてKarolクラスで私はあなたが言ったことをしましたが、私が_Formをやるとしました。それは私にはできません_Form.'form object ' – Zephni

+0

@Zephni: 'MainForm'に' this'を渡すと、すでにOKです。クラス内では、そのフォームへの参照を保存して使用します。問題はどこだ? – Tigran

+0

私はそれを作成するときにクラスに渡し、次にコンストラクタでForm1 form1 = form1;しかし、その後、私はform1.label1またはform1.KarolObjectを使用することはできません...私はそれをすべて間違っているのか、それともそれが簡単であると思っていますか?私の無能のために申し訳ありません。 – Zephni

1

"Karol"が操作しているフォームオブジェクトが1つだけの場合は、それをコンストラクタに渡して、後のメンバー呼び出しで使用できるように保存する必要があります。そうすれば、あなたは建設時に一度しか渡すことができません。

+0

、おかげで:)私はTigransはちょうど私がそれを理解したい「だって仕事を得ることがしたいです。しかし、ありがとう:) – Zephni

関連する問題