0

私はデータグリッドを持っており、次のような値にアクセスするために使用します:

userName = frm_main.datagrid1.Item(1, 0).Value.ToString

Itemただし、これはまったく問題ありませんが、新しいフォームを作成したばかりで、このプロパティにアクセスしようとすると、datagrid1利用できません。

誰かがアイデアを持っていますか、何が問題ですか?

より正確に入力すると、空色のfrm_mainように強調表示されます。class

4

1 に答える 1

1

別のフォームからfrm_mainにアクセスしようとしている場合は、frm_mainのインスタンスを使用する必要があります。動作するfrm_mainの既存のインスタンスがない場合、そのフォームに関する限り、frm_mainは存在しません。

frm_main内のどこかから2番目のフォームを初期化していると思いますか?その場合、初期化するときに、次のようにします。

Form2 f = new Form2(this);
f.Show();

そして、Form2のコードに、次のように入力します。

private frm_main Main;
Public Form2(frm_main _Main) { Main = _Main; InitializeComponent(); }

これにより、frm_mainの既存のインスタンスを操作して、その中のすべてのコントロールにアクセスできるようになります。Main、またはコードで付けたい変数名として参照するだけです。

*編集: *これはVB.Net用であり、このためのVBコードは

Dim f As New Form2(Me)
f.Show()

次に、Form2用の独自のコンストラクターを作成します

Dim Main As Form1
Public Sub New(ByRef _Main As Form1)
    Main = _Main
    InitializeComponent()
End Sub

それでいいはずです!

于 2012-09-29T13:39:56.223 に答える