• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETでのプログラム質問、フォーム上での構造体の引渡し)

VB.NETでのプログラム質問、フォーム上での構造体の引渡し

このQ&Aのポイント
  • VB.NETでのプログラム質問について解説します。フォーム上での構造体の引渡しについても解説します。
  • VB.NETでのプログラム質問の解説です。フォーム上での構造体の引渡し方について詳しく説明します。
  • VB.NETでのプログラム質問についての解説です。フォーム上での構造体の引渡し方法について詳細に説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

> あとすみません、質問攻めで申し訳ないのですが。 質問は、良いんですが・・・ > 仮にテキストBoxに書き込む際に、配列を使わずに文字制限を設けることは可能でしょうか? これって、この質問スレッドの主題である 「フォーム上での構造体の引渡し」 とは関係ないですよね? 別の主題なら、新しく質問していただいたほうが・・・ > 配列を使わずに って事ですが、「配列を使った」方法って言うのが良く分かりません・・・ 単純に、TextBoxコントロールのMaxLengthプロパティを指定するのじゃ駄目なんでしょうか?

kaisuke1
質問者

お礼

昨日まで出張でとばされてました(;´Д` 返信遅くなってすみません。 プロパティ指定以外でやる方法ないかなぁ、と思って考えていたのですが、プロパティで簡単に出来てしまうので他は考えないことにします(;´∀` 回答ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

書き忘れてました。 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 こんな感じ?

kaisuke1
質問者

お礼

続きです。 連続投稿ありがとうございます! 細かい指摘、その部分の一つを見つけてしまいました。。(泣 処理するたびにNewファイルで開き合っていたら、当然エラーが出ますよね; 変なエラーはずっと出ていたのですが、さっきやっと解決しました。 あとすみません、質問攻めで申し訳ないのですが。 仮にテキストBoxに書き込む際に、配列を使わずに文字制限を設けることは可能でしょうか? 例えば5文字までしか打てないと設定します。 6文字以上打とうとすると、それ以上入力・反映がされないという形で作りたいのですが、よろしければご教授願えないでしょうか。 よろしくお願いします。

すると、全ての回答が全文表示されます。
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

何をやりたいのか、いまひとつわからないんですけど・・・ > 変数とは書き方が違うかも ひょっとして、構造体自体を誤解しているとか・・・ 構造体は、ユーザ(つまり貴方)が独自に作成(定義する)データ型です。 つまり、「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) で、構造体のデータ型を引数のデータ型として指定します。

kaisuke1
質問者

お礼

回答ありがとうございます。 私は仕事の合間を見て独学でやっているので、本当に助かります; まず構造体自体を勘違いとのことですが・・・全くその通りでした! 説明ものすごく分かりやすかったです。 モジュールで構造体を宣言し、Publicで宣言させて全フォームで反映させるようにする手もあったのですが、ふと今回のようにやるにはどうしたらよいのかなと思いまして・・ 今回やろうとしていたことは、質問の部分のみですが記述します。 form1にリストboxを作り、その中にフォーム2で入力したデータ(名前、ID、性別)を反映。 その際、表示させるのは名前のみという条件で作っていたので、構造体が最も適切かなと思い挑戦していました。

すると、全ての回答が全文表示されます。

関連するQ&A