こんにちわ。
ただいまVB.NETをやっているのですが、どうしても分からない点があり、プログラムが進みません。
ヒントではなく、答えとして書き込んでいただければ幸いです。
同じプログラム上にForm1とForm2が用意されていて、Form2で構造体を使います。
仮に
Private Structure Mypoint
Public Name As String
Public ID As Integer
Public Sex As Double
End Structure
Private sub~~~
Dim pt As m_Mypoint
pt.ID = IDTextBox.Text
pt.Name = NameTextBox.Text
pt.m_Sex = True
End Sub
Dim Form1 As New Form(Mypoint)
Form1.ShowDialog()
として、form2で設定し、form1の方で
Private struct Mypoint
Public Sub New(ByVal m_Mypoint As String)
MyBase.New()
InitializeComponent()
Mypoint = m_Mypoint
として呼び出しているのですが、一向に呼び出せません。
変数とは書き方が違うかも、と思って色々試したり調べたのですが、丸一日分からなくてとまってしまいました。
よろしくお願いします。
書き忘れてました。
Form2側で
> Private Structure Mypoint
と宣言していますが・・・
Form2側ではなく、Form1側でPublic宣言しておかないと・・・
#他にも、細かな指摘がいくつもありますが・・・省略。
[例]
<Form1 側>
Public Structure Mypoint
Public Name As String
Public ID As Integer
Public Sex As Double
End Structure
Private mp As Mypoint
Public Sub New(ByVal m_Mypoint As Mypoint)
MyBase.New()
InitializeComponent()
mp = m_Mypoint
End Sub
<Form2 側>
Private pt As Form1.Mypoint
Private sub~~~
pt = New Form1.Mypoint
pt.ID = IDTextBox.Text
pt.Name = NameTextBox.Text
pt.m_Sex = True
End Sub
Private sub~~~
Dim Form1 As New Form1(pt)
End Sub
こんな感じ?
何をやりたいのか、いまひとつわからないんですけど・・・
> 変数とは書き方が違うかも
ひょっとして、構造体自体を誤解しているとか・・・
構造体は、ユーザ(つまり貴方)が独自に作成(定義する)データ型です。
つまり、「Ineteger型」とか「String型」とかと、同じレベルで「Mypoint」と言う構造体(データ型)を使えるようにしているんです。
で、「Ineteger型」とか「String型」を実際に使う場合、貴方はどうしますか?
> Dim i As Integer
の様に、
> Dim 変数名 As データ型
として、変数を宣下しますよね?
また、
> Public Sub New(m_Mypoint As String)
の様に、
> ~ (変数名 As データ型)
としますよね?
構造体も同じです。
構造体名が「Mypoint」なら、
> Dim 変数名 As Mypoint
で、「構造体を格納する変数」を宣言し、
> Public Sub New(ByVal pt As Mypoint)
で、構造体のデータ型を引数のデータ型として指定します。
お礼
昨日まで出張でとばされてました(;´Д` 返信遅くなってすみません。 プロパティ指定以外でやる方法ないかなぁ、と思って考えていたのですが、プロパティで簡単に出来てしまうので他は考えないことにします(;´∀` 回答ありがとうございました。