プロが教える店舗&オフィスのセキュリティ対策術

OS:Windows 2003 Server
言語:VB .NET 2005

AxMSFlexGridLib.AxMSFlexGridのset_TextMatrixエラーが発生します。

VB6からVB.NET2005への移行を行っています。
VB6ではエラーなく動いていた箇所です。

やっていることとやりたいことは、

1.Form1にAxMSFlexGridLib.AxMSFlexGridを使用して利用者リストを表示
  -->ここは問題なし

2.Form1で選択した利用者の情報をForm2に表示
  Form2はモーダルモードで立ち上げる
  -->ここも問題なし
  --【Form1.vb】------------------
  <VB6>
  Form2.Show vbModal, Me

  <.NET>
  Me.AddOwnedForm(Form2)
  Form2.ShowInTaskbar = False
  Form2.Show()
  ------------------------------

3.Form2で変更した内容を、Form1のリストに反映する
  -->ここでエラー発生
  --【Form2.vb】------------------
  <VB6>
  With Form1.flx利用者一覧
    .TextMatrix(.Row, 1) = tb氏名
    .TextMatrix(.Row, 2) = tb氏名フリガナ.Text
    .TextMatrix(.Row, 3) = tb郵便番号.Text
    .TextMatrix(.Row, 4) = tb住所.Text
    .TextMatrix(.Row, 5) = tb電話番号.Text
  End With

  <.NET>
  Dim Form1 As New Form1
  With Form1.flx利用者一覧
    .set_TextMatrix(.Row, 1, tb氏名.Text)
    .set_TextMatrix(.Row, 2, tb氏名フリガナ.Text)
    .set_TextMatrix(.Row, 3, tb郵便番号.Text)
    .set_TextMatrix(.Row, 4, tb住所.Text)
    .set_TextMatrix(.Row, 5, tb電話番号.Text)
  End With
  ------------------------------

3の「set_TextMatrix(.Row, 1, tb氏名.Text)」の箇所でエラーが発生します。

エラー内容は、
  「381 HRESULTからの例外:0x800A017D(CTL_E_INVALIDPROPERTYARRAYINDEX)」
です。

.Rowで対象の列番号も正しく取得されていますし、tb氏名.Textなども文字列がセットされています。

.NETでの画面遷移方法を変更したことと何か関係があるのでしょうか。AddOwnedFormを使って子画面を呼び出した場合、set_TextMatrixが使えないという仕様なのでしょうか。

よろしくお願いいたします。

A 回答 (1件)

当方の環境では減少が再現できません



ひとつ気になるのは『Dim From1 as new Form1』としてしまうと新たにメモリー上にForm1を作成してしまいますよ
やるなら
dim frm as Form1
frm = Ctype( Owner, From1)
With frm.flx利用者一覧
といった具合だろうと思います

エラーの内容からすると row,colの指示がおかしいといった意味のように思います
    • good
    • 0
この回答へのお礼

フォームの指示を教えていただいたように変更したら通りました!

フォームの指定がメモリ上に新しく作成するようになっていたため、
 「.Row」
の取得がうまくいかずエラーになっていたようです。

本当にありがとうございました!!!!!

お礼日時:2007/12/24 17:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!