- PR -

datagridのdoubleclickイベント

1
投稿者投稿内容
kushima
会議室デビュー日: 2004/08/18
投稿数: 10
投稿日時: 2004-08-26 19:58
はじめまして。初心者kushiと申します。
VB.NETでform1から検索用form2を開きます。
form2で検索結果をdatagridに表示させます。
datagridの一行をダブルクリックしたとき、その値をform1に表示ようと思います。VB6.0では、直接指定できていましたが、VB.NETでは表示先を指定できません。
datagridの選択されている行のデータ取得までは完了しましたが、表示先指定がわかりません。
よい方法をご存知の方、ご教授ください。
よろしくお願いします。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-08-26 20:07
さかもと と申します。
同じような件で悩んだ経験がありまして、結局スマートなやり方かどうかは不明ですが私は以下のように行いました。

【 dgAの任意レコードをダブルクリックすることで郵便番号と住所(15文字の長さに区切って)frmAの郵便番号と住所に代入する】ということをやっています
========================================================================
Private frm_A As frmA '/このフォーム内で使用する変数を定義

Private Sub dgA_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgA.DoubleClick
'/frmAへ戻す値の宣言
Dim paraZipCd As String '/郵便番号
Dim paraAddress As String '/住所
Dim len As String

'/呼出元のフォームの宣言
Dim frm_A As frmA

'/呼出元のフォームに自分の所在を宣言
frm_A = Me.Owner

'/選択されたレコードの「郵便番号」と「住所」を変数へ代入
paraZipCd = dgA.Item(dgA.CurrentCell.RowNumber, 0).trim
paraAddress = dgA.Item(dgA.CurrentCell.RowNumber, 1).trim

'/住所の長さを検証する
len = paraAddress.Length

'/呼出元のフォームに郵便番号を代入
frm_A.txtZipCd.Text = paraZipCd

'/呼出元のフォームに住所を代入
If len > 15 Then
frm_A.txtAddress1.Text = paraAddress.Substring(0, 15) '/1桁〜15桁
frm_A.txtAddress2.Text = paraAddress.Substring(16, len - 16) '/16桁〜最後
Else
frm_A.txtAddress1.Text = paraAddress '/15桁以内は住所1へ代入
End If

'/代入後に画面を閉じる
Me.Close()

End Sub

====================================================================
汚いコードなのでもう少しサンプル用にスマートな書き方ができればいいのでしょうが(笑)
使えなかったらすいません。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-08-26 20:10
追記(訂正)です。

コメント部分の
'/呼出「元」 ⇒'/呼出「先」 でした。
kushima
会議室デビュー日: 2004/08/18
投稿数: 10
投稿日時: 2004-08-26 21:28
さかもと様
親切に教えていただいてありがとうございます。

早速試してみましたが、
frm_A = Me.Owner の部分でfrm_Aにnothingが入り、frm_A.txtZipCd.Text = paraZipCd

の部分でエラーになります。

宣言の仕方がまずいのでしょうか?
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-08-27 07:33
さかもとです。
おはようございます。

エラー内容はどのようなものが出ていましたか?
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2004-08-27 08:12
さかもと 追記です。

@form1 が開かれている:検索用のform2を呼び出す画面
Aform1よりform2(検索用画面)を呼び出す:下記の例ではbtnBを押すことによってform2を呼び出しています
Bform2で検索し、結果をグリッドに表示
Cform2のグリッド(昨日のサンプルのdgA)をダブルクリック
D選択された項目がform1のテキストボックスへ代入

概要は上記のような手順になるかと思います。

>frm_Aにnothingが入り・・・

ということですが、恐らくfrm_Aのインスタンスが無いのでは?
つまり、form1が存在しない状態で宣言、及び代入をしているかと。
上記@〜Aの動作でform1はどのような状態になっていますか?

下はform1からform2を呼び出す際のサンプルです
==============================================================================
Private Sub btnB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnB.Click

Dim strZipCd As String

'/frmBのインスタンスを格納する変数
Dim frm_B As frmB

'/★呼出先のフォームのインスタンスを作成
frm_B = New frmB

'/呼出先のフォームに自分の所在を宣言
frm_B.Owner = Me

'/モーダルでfrmBを表示
frm_B.ShowDialog(Me)
End Sub

=============================================================================
kushima
会議室デビュー日: 2004/08/18
投稿数: 10
投稿日時: 2004-08-27 09:32
さかもと様
おはようございます。

朝早くからありがとうございます。

早速試してみたところ、うまくできました。
自分の勉強不足をとても感じている次第です。

今回は本当にありがとうございました。
1

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