- ベストアンサー
Comboの内容をDataGridViewに表示する方法
- VB2005とAccess2003を使用して、Windowsアプリを開発しています。ボタンを押すと、ComboBoxに表示されているSelectedValueの値をDataGridViewのカレント行の3列目のセルに表示したいと思っています。
- 現在、オブジェクト参照がオブジェクトインスタンスに設定されていないため、エラーが発生しています。どのように修正すれば良いか分からず、質問させていただきました。
- 参考書のカレント行の指定したセルに値を入力する方法を試してみましたが、他にも方法があれば教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
原因はわからないのですが、私は以下のコードで問題なく動作します。 新規のプロジェクトでフォームに DataGridViewとButtonを配置して以下のコードを記述。 '----------------------------------------------------- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '列の追加 For c As Integer = 0 To 5 Me.DataGridView1.Columns.Add("cell" & c.ToString(), "列" & c.ToString()) Next c '行の追加 For r As Integer = 0 To 10 Me.DataGridView1.Rows.Add() Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim dg As System.Windows.Forms.DataGridViewRow dg = DataGridView1.CurrentRow dg.Cells(2).Value = dg.Index.ToString() & "行目" End Sub '----------------------------------------------------- このコードでも一段上に表示されるのでしょうか? カレント行は色が変わっているセルのある行です。 あと今回のこととは関係ないのですが、 >メッセージボックスにカレントの列&行を表示させたところ わかっているかもしれませんがデバッグ中であればdebug.printを使ったほうが良いですよ。 Debug.Print("Hello") と記述すれば、イミディエイトウインドウ(Ctrl+G)にHelloと表示されます。 メッセージボックスだとそっちにフォーカスが移ってしますので 予期せぬトラブルを招いてしまうこともありますし。
その他の回答 (1)
- perse
- ベストアンサー率74% (113/152)
TestDataGridView.CurrentRowの値がNothingだからです。 選択されているセルが無いのではないでしょうか? どこかで TestDataGridView.CurrentCell = Nothing とかやっていませんか?
お礼
回答ありがとうございました。 選択されているセルが無いのでは?ということで、調べてみました。 TestDataGridView.CurrentCell = Nothing という処理は行っていませんでした。 メッセージボックスにカレントの列&行を表示させたところ、カーソルのある行の一段上の行が、カレントになっていました。なので一番最初に入力しようとしたらエラーになっていたみたいです。2行目にカーソルを移動して同じ処理をすると、一行目にComboのSelectedValueが入りました。 カーソルのある行がカレント行では?と思っていたのですが違うのでしょうか? カーソルのある行を選択状態にするにはどのような処理になるのでしょうか?
補足
検証を続けたところ、ComboのSelectValueを入力するために、DataGridViewの外に配置してあるボタンを押していたので、フォーカスがはずれて選択していた行がカレントではなくなっていたようです。 ボタンを押したときに、新規で行を挿入したらきちんと表示できるようになりました。 最初に書いたコードの上に、 TestBindingSource.AddNew() を追加しました。 フォーカスがはずれても編集中である、という操作があればいいのですが、よくわかりませんでした。 アドバイスがありましたら引き続きお願いいたします。
お礼
こんにちは、回答ありがとうございました。検証までしてくださって、ありがとうございます。 新しいフォームに教えていただいたコードを書いたら問題なく動作しました。色が変わっているセルがカレントになっていました。 自分のDataGridViewがうまく動作しなかったのは私が書いたほかのコードが何か悪さをしてたのかもしれません。 これで挑戦してみます。 debug.printのことですが、知りませんでした…。教えてくださってありがとうございます!調べたら、Write Lineとか色々あるんですね。 活用したいと思います。 この度は親切に回答を下さってありがとうございました!