• 締切済み

DataGridのセルをTextBoxで編集する

VB.NET(2003)初心者です。 DataGridにTextBoxを作成する方法を探してます。 下記サイトのコンボボックスで実現しているものは、 http://dobon.net/vb/dotnet/datagrid/datagridcombobox.html​ 見つけられたのですが、この内容を修正してコンボボックスから、 TextBoxへ置き換えたいのですが、どのように修正して良いものか悩んでおります。 大変恐縮ですが、御教授の程お願い致します。

  • mozi4
  • お礼率50% (1/2)

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

DataGridの組み込み機能ではご希望の動作はしないのでしょうか? 編集、更新、キャンセルボタン列を追加して編集ボタンを押せばセルがテキストボックスになり編集が可能になりますが ・・・ DataGridのプロパティビルダを起動します 左ペインで 列を選択 右ペインの『実行時に自動的に列を生成する』のチェックを外します 使用可能列のボタン列を展開し『編集、更新、キャンセル』を選択肢 『>』ボタンで追加 データフィールドを展開し必要な項目を『>』ボタンで追加 必要なコードを追加します Page_Loadイベントに DataAdapter.Fill( ds1 ) if IsPostBack=False then   DataGrid1.DataBind() End if コードウィンドウの上部左側のコンボボックスで DataGrid1 を選択 右側のコンボボックスで『EditCommand』を選択 DataGrid1.EditItemIndex = e.Item.ItemIndex DataGrid1.DataBind() 同様に右側コンボックスで『CancelCommand』を選択 DataGrid1.EditItemIndex = -1 DataGrid1.DataBind() といった具合です # コントロール名称などは適宜修正してください

mozi4
質問者

お礼

データグリッドコントロールそのものが、 編集可能であると存知あげておりませんでした。。。 VC++.net等View要素のみであるとばかり。 大変参考になりました。有難う御座います。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

編集状態で無い場合にテキストボックスを表示させたいってことでしょうか?

関連するQ&A

  • VB.NET2003のDataGridでコンボボックス

    こんにちは。 最近VB.NET(2003)を始めたばかりの初心者です。 DataGridにコンボボックスを作成する方法を探してまして、 http://dobon.net/vb/dotnet/datagrid/datagridcombobox.html に書いてあるようにDataGridTextBoxColumnクラスからの派生クラスを作成して呼び出してみました。 そうしたところ、コンボボックスが表示され、データのセットもきちんとできました。 しかし、そのコンボボックスで選択している値を取得する方法がわからなく困ってます。 たとえば Dim comboSorce As New DataTable("ComboBox") comboSorce.Columns.Add("DisplayMember", GetType(String)) comboSorce.Columns.Add("ValueMember", GetType(Integer)) comboSorce.Rows.Add(New Object() {"OK", 0}) comboSorce.Rows.Add(New Object() {"NG", 1}) というデータをコンボボックスにセットした場合 OK,NGという表示上の値は CStr(DataGrid1(row,col)) で取得できますが、実際の値を取得する方法がわかりません。 ご存知の方いらっしゃいましたら、ご教授ください。 それと、行毎に違う値(リストデータ)のコンボボックスを作成することはできますでしょうか? 以上です。よろしくお願いします。

  • DataGridのつかいかた

    VB.NETのDataGridでアクセスのデータベースに接続しています。ところで、DataGridを使ったとき、たとえば、 DataSet11.Tables(1)...... といったように、Tables()にはインデックスとして数字を入れますが、テーブルはユーザの数だけどんどん増えていったり減ったりと流動的なため、インデックスではなく、ユーザが入力したID(たとえば"040736"など)を、直接いれるため、 DataSet11.Tables(TextBox1.text)...... というふうにしましたが、エラーで、「オブジェクト参照がオブジェクトインスタンスに設定されていません」と出てしまいました。教えてください!

  • DataGridの行番号

    クライアント:Windows2000 Professional VB.net 2003 .net初心者です。 .net標準のDataGridコントロールにDB(Oracle)より取得したデータを表示させようとしております。 その際に、DBの項目のほかに、行番号を「1」から順に昇順で振っていきたいと思っております。 プロパティの設定で出来るものと思っておりましたが、どうもそうでないようで、実現の方法をご存知の方、いらっしゃいましたら、宜しくご教授お願いします。

  • VC++ TextBoxの定義

    お世話になります。 c++でTextBoxの入力制限(数値のみ)を、下記URLを参考に作成しているのですが、 TextBoxの動作を定義するところが、コンパイルエラーになります。 http://dobon.net/vb/dotnet/control/numerictextbox.html 【エラーになる定義部】 this->TextBox->KeyPress += System::Windows::Forms::KeyEventHandler(this, &MainForm::KeyPressEventArgs); ※ エラー内容は「XXXはYYYのメンバではありません」 「system::」のところか「&MainForm」のところの定義が悪いのだと思うのですが、 どの様に宣言すればよいのか教えていただけないでしょうか 【関数】 System::Void TextBox_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) { 本文 }

  • DataGridのセルの移動について

    いつもお世話になっております。 VB.NET2003にて開発を行っております。 作成している画面にDataGridを配置して入力等を行おうとしておりますが、その際に「Tabキー」ではセルの移動はできますが、「Enterキー」でもセルを移動させたいと思います。 (お客さまの要望で「Enterキー」移動を行いたいのです。) どなたかご存知でしたらお教え願います。 宜しくお願い致します。

  • VB2005でデータグリッドビューにTextBoxのセルとComboBoxのセルを表示

    はじめまして。プログラム開発初心者です。よろしくお願いいたします。 OSはWin2000、VB2005でプログラムを作成しています。 データベースはACCESS2000を使用しています。 今回はデザイナではなく、プログラムにてDatagridView.ROWS.ADDで行追加したいと思っています。 フォームにデータグリッドビューを配置し、三つのカラムにデータベースから持ってくるデータをを表示させたいと思っています。 ただし三つ目のカラムをコンボボックスにして 4つのデータを用意してデータを変更できるようにしたいと思っています。 DatagridView.ROWS.ADDにてテキストボックスカラムを二つ、コンボボックスの列を一つ行追加するにはどのようにしたらいいのでしょうか? またそのコンボボックスの中身の設定はどのようにしたらよいのでしょうか? テキストボックスのみの行追加はできるのですが。。。 テキストボックスカラム+コンボボックスのカラムを追加する方法を調べたのですが探しきれませんでした。 お知恵をおかしください。

  • DataGridのReadOnlyについて

    こんにちは いつもお世話になっております。 VB.NET(2003)で、DataGridにデータを表示して、編集-更新する処理を行っています。 表示ボタンを押したら表示され、更新ボタンで更新される動作です。 表示方法はDataGridTextBoxColumnのReadOnly=TrueにしたものをDataTableにADDし、 これをDataGrid.DataSourceにセットして表示させています。 そして、クリアボタン押したときに dtb = New DataTable 'グリッドに表示 DataGrid.DataSource = dtb というようにDataTableを初期化してクリアしているのですが このときDataGrid上のTextBoxにカーソルがあると そのTextがクリアされず表示されたままになってしまいます。 ReadOnlyですが、一応カーソルは当たるようにしたいのです。 表示されたままになっているのは、クリアの方法がまずいのでしょうか? すみませんが、どなたか教えていただけませんでしょうか?

  • TextBoxに"333"と入力されても"000333"として扱いたい

    VB.NETです。 フォーム上のTextBox(MaxLength=6)に、"333"と入力されても"000333"として、"4444"と入力されても"004444"として、TextBox内に表示させ、それを変数に渡したいのですが、良いフォーマット手法があれば、ご教授下さいませ。

  • 現在どのTextBox上にフォーカスがあるのかを取得したいのですが・・・

    以前、TextBox1.Focusedで、TextBox1にフォーカスがあるかどうか判定できるという回答をいただき助かりましたが、現在、どこのTextBoxにカーソル(フォーカス)があるのかを取得することはできないでしょうか? というのも、タブ移動であるTextBoxにフォーカスが移ったときに、隣り合わせたTextBoxに値を入れたいので。 TextBox1.Focusedでも実現できたのですが、以下のようにIF文の嵐になってしまい、TextBoxを増やすとIF文を頭からなめるので処理スピードに問題が出てきそうなので。 If Me.TextBox1.Focused = True Then  TextBox_A.Text = "値1" ElseIf TextBox2.Focused = True Then  TextBox_B.Text = "値2" ElseIf TextBox3.Focused = True Then  TextBox_C.Text = "値3" ElseIf TextBox4.Focused = True Then  TextBox_D.Text = "値3"   ・   ・   ・ LostFocuseとかで、実現した方がいいのかもしれませんが・・・どうでしょう? 毎度、面倒なご質問ばかりで、恐縮です。 ご教授、よろしくお願い致します。 ちなみに、コーディング環境は、VB.NETです。

  • .NET DataGridの行選択

    いつもお世話になっております。 VB.NET 2003 の標準コントロールDataGridを使用しておりますが、行選択(1行のみ・編集不可)が出来ないのですが、ご存知の方おられましたら、宜しくご教授お願いします。

専門家に質問してみよう