2016-08-29 3 views
0

Datagridview内のコントロールTableLayoutPanelの内部にあるSplitContainer Panel1のフォームを参照するにはどうすればよいですか?私はこれをDatagridのコードを別のフォームに隠す必要があります。スプリットコンテナ内のTableLayoutPanelのコントロールへの参照

ので、デザインがある:フォーム - >スプリットコンテナ - > TableLayoutPanel - > DataGridViewの

すべてのヘルプ感謝します!

+0

'このデータグリッドを別のフォームからコードに隠す必要があります.'あるいは' HideTheDGV() 'のようなフォームにメソッドを追加して、フォームにそれ自身のコントロールを処理させてください。 – Plutonix

+0

こんにちはPlutonix。私はこの1つと苦労している - 私に説明させてください。 1つ目は、DataGridがvisible = falseになる前に、DataGridviewにレコードを表示するForm1があります。第2に、DataGridにいくつかのレコードがあるときにForm2を開き、ここからDataGridがvisible = trueであるかどうかを判断する必要があります。問題は "Form1.Datagridview1.Visible = True"は何も返しません、私はForm1クラスを参照し、Form1を開いていないと思います。私はこの状態を保持する必要があると考えて、Form2を再度開いてこのOpened Form1値を再度必要とするため、Opened Form1を参照するには何ができますか? – LuckyLuke82

答えて

0

DataGridViewをデザイナーに追加する場合は、単にFormReference.DataGridViewNameと呼ぶことができます。

デザイナーのGenerateMember属性がDefault Valueで、パブリックアクセスを許可するものに設定されているTrueに設定されていることを確認するだけです。

+0

ありがとうございますが、私には1つの問題があります。デフォルトでは、TableLayoutはvisible = Falseです。ボタンをクリックすると表示されます。 Form2をクリックした後、これは機能しません。If Form1.DataGridView1.Visible = True Then - visible = falseに変更すると、コードが動作します。どうして ? – LuckyLuke82

+0

これは私のためには機能しません。どうやらコードはvisible = falseだけを認識しますが、そうではありません。私はdatagridviewを見ることができます。私はなぜこれが起こっているのか分からない。 – LuckyLuke82

0

私は答えを見つけました。私は思ったほど単純ではありません。

  1. VB.NETには「自動フォームコレクション」はありません。

コントロールがForm1にある場合は、Form2を開くときに、 にForm1のOpenバージョンを見つける必要があります。 Form1を参照するだけで、 は、Form1クラスへの参照だけではなく、Open Form1への参照を取得しません。

だから、Form2のは、オープンForm1に参照する変数を必要とします:

Public OpenedForm1 as Form1 

その後のForm2を開くために、Form1が持っている必要があります:

Dim f as new Form2 
f.OpenedForm1 = Me 
f.show 

その後のForm2がForm1のコントロールを参照します

Me.OpenedForm1.NameOfControl 

誰かがこれをやってくれた方がいたら、m e know - 私はそれがかなり好きではない。

+0

'VB.NETには '自動フォームコレクション'はありません。ありますが、機会にフォームを忘れる可能性があります:' Application.OpenForms() '。コード内のフォーム参照を保持する方がよいでしょう。 – Plutonix

+0

私もこれを試しましたが、あなたが必要とすることをコントロールする方法をチェックする方法は?私が知っているように、フォームがこのように開かれているかどうかだけを確認することができます。 – LuckyLuke82

関連する問題