- - PR -
datagridのdoubleclickイベント
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-08-26 19:58
はじめまして。初心者kushiと申します。
VB.NETでform1から検索用form2を開きます。 form2で検索結果をdatagridに表示させます。 datagridの一行をダブルクリックしたとき、その値をform1に表示ようと思います。VB6.0では、直接指定できていましたが、VB.NETでは表示先を指定できません。 datagridの選択されている行のデータ取得までは完了しましたが、表示先指定がわかりません。 よい方法をご存知の方、ご教授ください。 よろしくお願いします。 |
|
投稿日時: 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-08-26 20:10
追記(訂正)です。
コメント部分の '/呼出「元」 ⇒'/呼出「先」 でした。 |
|
投稿日時: 2004-08-26 21:28
さかもと様
親切に教えていただいてありがとうございます。 早速試してみましたが、 frm_A = Me.Owner の部分でfrm_Aにnothingが入り、frm_A.txtZipCd.Text = paraZipCd の部分でエラーになります。 宣言の仕方がまずいのでしょうか? |
|
投稿日時: 2004-08-27 07:33
さかもとです。
おはようございます。 エラー内容はどのようなものが出ていましたか? |
|
投稿日時: 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 ============================================================================= |
|
投稿日時: 2004-08-27 09:32
さかもと様
おはようございます。 朝早くからありがとうございます。 早速試してみたところ、うまくできました。 自分の勉強不足をとても感じている次第です。 今回は本当にありがとうございました。 |
1