- PR -

配列や構造体のフォーム間の引き渡し方法

1
投稿者投稿内容
eiji
会議室デビュー日: 2003/10/26
投稿数: 3
投稿日時: 2003-11-10 20:08
初めまして
Windowsフォームで開発をしております。
たとえばForm1で定義したユーザー定義の配列をForm2へ引き渡したいと考えておりますがうまくいきません。
Form2のSub New()に引数を設定すると、String型やInteger型などを引き渡せることはできましたが、なぜか配列や構造体だとだめです。
どなたか上手い方法をご存じの方、いらっしゃいましたら是非ご教授頂けますようお願いします。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-11-10 21:47
引用:

eijiさんの書き込み (2003-11-10 20:08) より:
Form2のSub New()に引数を設定すると、String型やInteger型などを引き渡せることはできましたが、なぜか配列や構造体だとだめです。


どのようにやってみて、どう駄目だったんでしょう?
eiji
会議室デビュー日: 2003/10/26
投稿数: 3
投稿日時: 2003-11-12 09:51
早速のレスありがとうございます。
たとえば
Form2のSub New()を
Public Sub New(ByVal arr)
・・・
End Sub
として
もちろん
Public arr() As Integer
の宣言も行っています。
Form1から
Dim array(2) As Integer
array(1) = 123

Dim frm As New Form2(array)
frm.Show()
としてForm2を表示してForm2上のテキストボックスにForm2_Loadイベントで
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = arr(1)
End Sub
と言う簡単なサンプルを作ってみたんですが
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
とエラーとなってしまいます。
渡す変数が配列や構造体以外の場合はうまいこといくのですが・・・
こんな感じでうまくいっておりません。
考え違いをしているのかもしれません、よろしくお願いします。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-11-12 10:53
> Form2のSub New()を
> Public Sub New(ByVal arr)
> ・・・
> End Sub
この・・・の中身はどうなってるんでしょう?
# Object で受けてるっぽいのがすごい怪しいんですが…

> として
> もちろん
> Public arr() As Integer
> の宣言も行っています。
これは Form2 のフィールドとして定義していると考えてよいでしょうか?
そうであるとして、渡された引数は arr に設定しているんでしょうか(・・・の部分)?
単に引数を受け取るだけ受け取って何もしてないだけにも見えますが…

> 渡す変数が配列や構造体以外の場合はうまいこといくのですが・・・
本当にうまいこといってますか?
渡した値がちゃんと取れてますか?
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-12 12:59
eijiさん、こんにちは。

引用:

Public Sub New(ByVal arr)
・・・
End Sub


Public Sub New(ByVal arr() As Integer)
とすると、どうですか?

引用:

Public arr() As Integer


どこで宣言しているのか判りませんが(Form2?)、コンストラクタの引数と名前が一緒ですけど大丈夫ですか?

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-12 13:32
public class form2 ...
 public arr() as integer

 publuc sub new(arr)
  ...
 end sub
 ...
end class

こんなことしてます?これは、エラーになりますよ。
1

スキルアップ/キャリアアップ(JOB@IT)