私はデータグリッドを持っており、次のような値にアクセスするために使用します:
userName = frm_main.datagrid1.Item(1, 0).Value.ToString
Item
ただし、これはまったく問題ありませんが、新しいフォームを作成したばかりで、このプロパティにアクセスしようとすると、datagrid1
利用できません。
誰かがアイデアを持っていますか、何が問題ですか?
より正確に入力すると、空色のfrm_main
ように強調表示されます。class
私はデータグリッドを持っており、次のような値にアクセスするために使用します:
userName = frm_main.datagrid1.Item(1, 0).Value.ToString
Item
ただし、これはまったく問題ありませんが、新しいフォームを作成したばかりで、このプロパティにアクセスしようとすると、datagrid1
利用できません。
誰かがアイデアを持っていますか、何が問題ですか?
より正確に入力すると、空色のfrm_main
ように強調表示されます。class
別のフォームから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
それでいいはずです!