C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Form1のテキストボックスの内容をForm2のDGVに /VB.net初心者 (18/11/16(Fri) 17:29) #89287
Re[1]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/16(Fri) 22:36) #89288
  └ Re[2]: Form1のテキストボックスの内容をForm2のDGVに /VB.net???S?? (18/11/17(Sat) 16:09) #89289
    └ Re[3]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/18(Sun) 12:50) #89290
      └ Re[4]: Form1のテキストボックスの内容をForm2のDGVに /VB.net Biginner (18/11/19(Mon) 01:24) #89295
        └ Re[5]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/19(Mon) 08:37) #89296
          └ Re[6]: Form1のテキストボックスの内容をForm2のDGVに /VB.net Biginner (18/11/20(Tue) 14:12) #89326
            ├ Re[7]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/20(Tue) 14:36) #89328
            │└ Re[8]: Form1のテキストボックスの内容をForm2のDGVに /VB.net Biginner (18/11/21(Wed) 17:11) #89375
            │  └ Re[9]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/21(Wed) 17:34) #89376
            └ Re[7]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/20(Tue) 14:46) #89329
              └ Re[8]: Form1のテキストボックスの内容をForm2のDGVに /リンクス (18/11/20(Tue) 16:22) #89339
                └ Re[9]: Form1のテキストボックスの内容をForm2のDGVに /PANG2 (18/11/21(Wed) 17:39) #89377
                  └ Re[10]: Form1のテキストボックスの内容をForm2のDGVに /VB.net Biginner (18/11/24(Sat) 00:32) #89398
                    └ Re[11]: Form1のテキストボックスの内容をForm2のDGVに /WebSurfer (18/11/24(Sat) 05:53) #89399
                      └ Re: Form1のテキストボックスの内容をForm2のDG /リンクス (18/11/25(Sun) 10:09) #89400
                        └ Re[13]: Re: Form1のテキストボックスの内容をForm2のDG /VB.net Biginner (18/11/27(Tue) 02:04) #89405
                          └ Re[14]: Re: Form1のテキストボックスの内容をForm2のDG /WebSurfer (18/11/27(Tue) 10:23) #89407
                            └ Re[15]: Re: Form1のテキストボックスの内容をForm2のDG /VB.net Biginner (18/11/27(Tue) 11:23) #89410
                              └ Re[16]: Re: Form1のテキストボックスの内容をForm2のDG /WebSurfer (18/11/27(Tue) 11:59) #89412
                                └ Re[17]: Re: Form1のテキストボックスの内容をForm2のDG /BVL (18/11/27(Tue) 13:02) #89414
                                  └ Re[18]: Re: Form1のテキストボックスの内容をForm2のDG /VB.net Biginner (18/11/27(Tue) 19:39) #89419
                                    ├ Re[19]: Re: Form1のテキストボックスの内容をForm2のDG /Jitta (18/11/28(Wed) 08:44) #89421
                                    └ Re[19]: Re: Form1のテキストボックスの内容をForm2のDG /WebSurfer (18/11/28(Wed) 10:50) #89423
                                      └ Re[20]: Re: Form1のテキストボックスの内容をForm2のDG /PANG2 (18/11/28(Wed) 11:01) #89424
                                        └ Re[21]: Re: Form1のテキストボックスの内容をForm2のDG / リンクス (18/11/28(Wed) 11:30) #89425
                                          └ Re[22]: Re: Form1のテキストボックスの内容をForm2のDG /せば (18/11/28(Wed) 17:28) #89433
                                            └ Re[23]: Re: Form1のテキストボックスの内容をForm2のDG /VB.net Biginner (18/12/02(Sun) 23:13) #89535 解決済み


親記事 / ▼[ 89288 ]
■89287 / 親階層)  Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ VB.net初心者 (4回)-(2018/11/16(Fri) 17:29:00)

分類:[VB.NET/VB2005 以降] 

開発環境はVisualStudio2017、使用言語はVB.netです。

Form1のテキストボックスの内容をForm1のButton1をクリックしたときにForm2のDataGridViewに反映させたいです。
テキストボックスは3つあり、それぞれDGVのA列、B列、C列に当てはめたいです。

御力添えよろしくお願いします。
[ □ Tree ] 返信 編集キー/

▲[ 89287 ] / ▼[ 89289 ]
■89288 / 1階層)  Re[1]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1662回)-(2018/11/16(Fri) 22:36:00)
No89287 (VB.net初心者 さん) に返信

どこまで自力で実装できていて、どこでつまづいているか、何が分かれば解決できるのか、
コードを示すなどして具体的に書くことはできませんか?

[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89288 ] / ▼[ 89290 ]
■89289 / 2階層)  Re[2]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ VB.net???S?? (1回)-(2018/11/17(Sat) 16:09:57)
No89288 (WebSurfer さん) に返信
今は実験的にまず同一Formでできるか確認しています。

http://kchon.blog111.fc2.com/blog-entry-27.html
こちらを参考にして
Dim idx As Integer
DataGridView1.Rows.Add()
idx = DataGridView1.Rows.Count - 1
DataGridView1.Rows(idx).Cells(0).Value = TextBox1.Text
DataGridView1.Rows(idx).Cells(1).Value = TextBox2.Text
DataGridView1.Rows(idx).Cells(2).Value = TextBox3.Text

このコードを作ってみました。
このコードだと行を追加すると1行目が空白の行になって2行目に追加されます。
また、さらに追加すると2行目に入力されていたテキストが消えて空白の行になり3行目に新しいテキストが追加されます。

いま躓いているのは1行目から追加したい、さらにどんどん追加できるようにしたいの2点です。
最終的には別FormのDGVに追加したいと思います。
よろしくお願いします。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89289 ] / ▼[ 89295 ]
■89290 / 3階層)  Re[3]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1663回)-(2018/11/18(Sun) 12:50:56)
No89289 (VB.net???S?? さん) に返信

「VB.net初心者」さん=「VB.net???S??」さんですよね?
日本語をハンドル名に使うと文字化けすることがあるそうですので注意してください。

List(Of T) 型のオブジェクトを作って、それを BindingSource 経由で DataGridView に表示し、
追加する際はテキストボックス入力から T 型のオブジェクトを作り、それを BindingSource.Insert
メソッドで追加するようにしてはいかがですか?

T 型というのは例えば以下のようなクラスです。

Public Class Item
Public Property A As String
Public Property B As String
Public Property C As String
End Class
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89290 ] / ▼[ 89296 ]
■89295 / 4階層)  Re[4]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ VB.net Biginner (1回)-(2018/11/19(Mon) 01:24:06)
No89290 (WebSurfer さん) に返信
> ■No89289 (VB.net???S?? さん) に返信
>
> 「VB.net初心者」さん=「VB.net???S??」さんですよね?
> 日本語をハンドル名に使うと文字化けすることがあるそうですので注意してください。
了解です。

返信ありがとうございます。
T型オブジェクトという用語を初めて聞いたのでご返信を参考に試行錯誤してみます!
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89295 ] / ▼[ 89326 ]
■89296 / 5階層)  Re[5]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1664回)-(2018/11/19(Mon) 08:37:11)
No89295 (VB.net Biginner さん) に返信

> T型オブジェクトという用語

List(Of T) でググってください。「T型オブジェクト」ではヒットしないと思います。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89296 ] / ▼[ 89328 ] ▼[ 89329 ]
■89326 / 6階層)  Re[6]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ VB.net Biginner (2回)-(2018/11/20(Tue) 14:12:19)
List(Of T)でやろうとしていたのですが、私の理解が及ばず結局
idx = DataGridView1.Rows.Count - 1 → idx = DataGridView1.Rows.Count - 2
に変更することで思っていた処理になりました。

あとはForm1のテキストボックスの内容をForm1のButton1をクリックしたときにForm2のDataGridViewに反映させたいです。
テキストボックスは3つあり、それぞれDGVのA列、B列、C列に当てはめる形にしたいです。

このコードで試してみましたが追加されませんでした。
Dim idx As Integer
Form2.DGV.Rows.Add()
idx = Form2.DGV.Rows.Count - 2
Form2.DGV.Rows(idx).Cells(0).Value = TextBox1.Text
Form2.DGV.Rows(idx).Cells(1).Value = Label1.Text
Form2.DGV.Rows(idx).Cells(2).Value = Label2.Text
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89326 ] / ▼[ 89375 ]
■89328 / 7階層)  Re[7]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1667回)-(2018/11/20(Tue) 14:36:26)
No89326 (VB.net Biginner さん) に返信
> List(Of T)でやろうとしていたのですが、私の理解が及ばず結局
> idx = DataGridView1.Rows.Count - 1 → idx = DataGridView1.Rows.Count - 2
> に変更することで思っていた処理になりました。

そういう方法は、すみませんが、自分としては考える気がおきません。

C# でですがサンプルを書いておきますので、これを見てどうするか考えていただくよう
お願いします。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form5 : Form
    {
        private DataGridView dataGridView1;
        private BindingSource bindingSource1;

        public Form5()
        {
            InitializeComponent();

            this.dataGridView1 = new DataGridView();
            this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.bindingSource1 = new BindingSource();
            this.dataGridView1.DataSource = this.bindingSource1;
            this.Controls.Add(this.dataGridView1);

            List<Item> list = new List<Item>
            {
                new Item { A = "a1", B = "b1", C = "c1" },
                new Item { A = "a2", B = "b2", C = "c2" },
                new Item { A = "a3", B = "b3", C = "c3" }
            };

            this.bindingSource1.DataSource = list;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Item item = new Item { A = "a0", B = "b0", C = "c0" };
            this.bindingSource1.Insert(0, item);
        }
    }

    public class Item
    {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
    }
}

[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89328 ] / ▼[ 89376 ]
■89375 / 8階層)  Re[8]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ VB.net Biginner (4回)-(2018/11/21(Wed) 17:11:27)
No89328 (WebSurfer さん) に返信
>
> そういう方法は、すみませんが、自分としては考える気がおきません。
>
> C# でですがサンプルを書いておきますので、これを見てどうするか考えていただくよう
> お願いします。

わざわざサンプルコードまで書いていただいてありがとうございます。
参考にしてチャレンジしてみました。
テキストボックスの内容をDGVに表示するところまではいけました。
しかし、DGV1にDGV2が重なって?表示されてうまくいきませんでした。
ですがList(Of T)については少し理解できたような気がします。

No89339 (リンクス さん) に返信
> 面倒なことを考えずに、
>
> DataGridView1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
>
> でいいんじゃないの?
>
ご返信ありがとうございます。
このコードを元に別Formへの表示までいけました。

元の質問からは少しずれてしまいますが、私が最初に参考にしていたサイトのもの、List(Of T)を使用したもの、最後のシンプルなもので使用にあたるメリットデメリットはなにかありますか?
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89375 ] / 返信無し
■89376 / 9階層)  Re[9]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1674回)-(2018/11/21(Wed) 17:34:48)
No89375 (VB.net Biginner さん) に返信

> しかし、DGV1にDGV2が重なって?表示されてうまくいきませんでした。

何を言っているのか分かりません。

私の書いたサンプルコードには dataGridView1 しかありません。 質問者さんが何か手を加えたのだろうと
想像してますが、何をしたのかはここに書いてないので分かりません。


> 私が最初に参考にしていたサイトのもの、List(Of T)を使用したもの、最後のシンプルなもので使用に
> あたるメリットデメリットはなにかありますか?

DataGridView だけにデータを追加しても意味がないのでは? 私が紹介したコードの通りにすれば、
List<Item> list に追加され、それが DataGridView に表示されるようになります。なので、追加
作業の完了後 list に全てのデータがあり、それを利用できます。

それが、DataGridView の使い方のあるべき姿だと自分は思います。

もっと言えば、型付 DataSet / DataTable + DataAdapter と組み合わせて、SQL Server などの DB の
テーブルのレコード一覧の表示、編集を行い、編集結果を DB に書き戻すための UI に使うのが本来の
姿だと思います。

以下の図のような構成です。

Windows フォーム アプリケーションでのデータへの接続
https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx

DataGridView は、その図で言うと Form1 の部分で、UI としてユーザーの編集操作を DataSet / DataTable
に反映するのに使うだけです。

コードで TextBox からユーザー入力を DataGridView に反映するなんてことは、自分的にはあり得ません。


[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89326 ] / ▼[ 89339 ]
■89329 / 7階層)  Re[7]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1668回)-(2018/11/20(Tue) 14:46:13)
No89326 (VB.net Biginner さん) に返信

【追伸】

C# が分からなければ C# ⇒ VB.NET 変換サービスを使ってください。

http://converter.telerik.com/

そのままコピペすれば使えるほど正確かどうかは分かりませんが、人が読んで
理解できる程度にはなります。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89329 ] / ▼[ 89377 ]
■89339 / 8階層)  Re[8]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ リンクス (1回)-(2018/11/20(Tue) 16:22:42)
面倒なことを考えずに、

DataGridView1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)

でいいんじゃないの?

[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89339 ] / ▼[ 89398 ]
■89377 / 9階層)  Re[9]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ PANG2 (247回)-(2018/11/21(Wed) 17:39:56)
他のスレッドでの私の投稿です。参考にしてください。
---
個々のセルに代入するより、
DataGridView.DataSource = List<T>
の一発でデータバインドしたほうがよい。
さらに、
ExecuteReader / List<T> より DataAdapter / DataSet がよい。
DataSet より 型付DataSet がよい。
BindingSource を噛ませるとさらによい。

DataAdapter/型付DataSet/BindingSourceをドラッグ&ドロップで自動生成する方法を試してみるべし。

ドラッグ&ドロップ一発でDB連携アプリを完全構築!
http://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_12/vb2005_12_01.html
---
http://bbs.wankuma.com/index.cgi?mode=al2&namber=89240
No6も参照


List<T> と BindingSourceの組み合わせは初めて知りました。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89377 ] / ▼[ 89399 ]
■89398 / 10階層)  Re[10]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ VB.net Biginner (5回)-(2018/11/24(Sat) 00:32:15)
飲食店のオーダーシステムを作成しています。
メインのFormのDataGridViewにはSQLで作成したテーブルのデータが表示されています。SQLを使用するのは初めてです。
商品IDをテキストボックスに入力すると対応する行の商品名(ラベルテキスト1)、価格(ラベルテキスト2)が表示され、ボタンを押すと各部屋ごとのFormのDataGridViewに注文履歴が表示されるようなプログラムが作りたいです。

今回の場合だとDataGridViewは表示に使うだけでDataGridViewのデータソースへデータを追加する方がいろいろ便利でいいということですか?
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89398 ] / ▼[ 89400 ]
■89399 / 11階層)  Re[11]: Form1のテキストボックスの内容をForm2のDGVに
□投稿者/ WebSurfer (1677回)-(2018/11/24(Sat) 05:53:30)
No89398 (VB.net Biginner さん) に返信

> 今回の場合だとDataGridViewは表示に使うだけでDataGridViewのデータソースへデータを追加する方がいろいろ便利でいいということですか?

ちょっと違うかと。

データソースを型付 DaraSet/DataTable にして、
それに TableAdapter を利用してユーザーが指定し
た条件に応じてSQL Server よりデータを抽出して保
存し、それを DataGtidView に表示するのです。

[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89399 ] / ▼[ 89405 ]
■89400 / 12階層)  Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ リンクス (2回)-(2018/11/25(Sun) 10:09:58)
2018/11/25(Sun) 10:36:31 編集(投稿者)

DataGridViewに表示した後どうするかにもよるけれど、
別にDataGridViewは必ずしもDataSourceのバインドが必要というわけではないよ。
RDBMSを利用するわけではなく、単にリスト表示にDataGridViewを使うだけであれば、
DataGridView1.Rows.Add(行1データ, 行2データ, 行3データ...)が楽でいいんじゃね?
もちろん、空行のデータソースを用意して、それにデータを追加してもいいけど、このデータ量だったら、オレはそこまでしない。する必要性を感じない。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89400 ] / ▼[ 89407 ]
■89405 / 13階層)  Re[13]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ VB.net Biginner (7回)-(2018/11/27(Tue) 02:04:50)
> DataGridView1.Rows.Add(行1データ, 行2データ, 行3データ...)が楽でいいんじゃね?
これはなぜか追加後Form2(部屋ごとのForm)を閉じるとDataGridViewの中身が消えてしまいました。

今は部屋ごとにデータベース(.mdf)、データセット(.xsd)を作成して、注文Formのボタンから部屋ごとのデータテーブルにデータを追加して、それをDataGridViewにバインディングして表示しようと試みています。
検索しても新しく?データテーブルを作成してそのテーブルに行を追加していくコードしかなく、それを参考にコードを考えてみましたがうまくいきません。
どのように書けばいいでしょうか?
注文FormのText1,2,3をボタンクリックでDataTableに追加、そのデータを部屋ごとのDataGridViewにバインディングして表示したいです。

[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89405 ] / ▼[ 89410 ]
■89407 / 14階層)  Re[14]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ WebSurfer (1679回)-(2018/11/27(Tue) 10:23:20)
No89405 (VB.net Biginner さん) に返信

文章には適宜改行を入れてもらえませんか。読み難いです。

> 検索しても新しく?データテーブルを作成してそのテーブルに行を追加していくコードしかなく、
> それを参考にコードを考えてみましたがうまくいきません。
> どのように書けばいいでしょうか?

少なくとも自分には情報不足で分かりません。

質問者さんが、(1) どのようなことを期待して、(2) どのような実装をしたが、(3) 結果は期待に
反してどのようになってしまうかということを、具体的に(ここに書いてないこと以外は知り得な
い第三者が分かるようにあくまで具体的に)書いてください。

> 注文FormのText1,2,3をボタンクリックでDataTableに追加、そのデータを部屋ごとのDataGridView
> にバインディングして表示したいです。

全体的なやりたいことは No89398 の通りと理解していますが、上記は一体その中の何なのですか?


[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89407 ] / ▼[ 89412 ]
■89410 / 15階層)  Re[15]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ VB.net Biginner (9回)-(2018/11/27(Tue) 11:23:18)
(1) どのようなことを期待して、
全体的なやりたいことはNo89398です。

現在躓いているところは
注文FormのText1,2,3をボタンクリックで各部屋ごとのDataTableに追加する部分です。


(2) どのような実装をしたが、

Dim dt As DataTable = Room101DatabaseDataSet.Tables("Table")'各部屋ごとのデータテーブル
Dim dr As DataRow

dr = dt.NewRow()
dr("id") = TextBox1.Text
dr("商品名") = Label1.Text
dr("値段") = Label2.Text
'行を追加
dt.Rows.Add(dr)

(3) 結果は期待に反してどのようになってしまうか
上記のコードを試したところ、Room101DatabaseDataSet.Tables("Table")のところで下記のエラーが出てしまいます。

エラー BC32016 'Public ReadOnly Property Tables As DataTableCollection' にはパラメーターがないため、戻り値の型をインデックス化できません。

[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89410 ] / ▼[ 89414 ]
■89412 / 16階層)  Re[16]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ WebSurfer (1680回)-(2018/11/27(Tue) 11:59:51)
No89410 (VB.net Biginner さん) に返信

どうも話が通じないようです。ちょっとギブアップ気味ですが、もう一度だけ。

> 全体的なやりたいことはNo89398です。

そのシナリオ・ストーリーの中で、

> 注文FormのText1,2,3をボタンクリックで各部屋ごとのDataTableに追加する部分です。

というような操作は自分の頭の中では存在し得ないです。なので、そういうことをする意味が全く
理解できません。見当違い・的外れなことをしている気がします。

TextBox ということはユーザー入力ですよね? であれば、上で紹介されているデーターソース
構成ウィザードを使って普通に作れば、ユーザー入力は直接 DataGridView に入力すればよく、
DB へ反映したければボタンクリックだけでできます。

もし、見当違い・的外れなことだとすると、考える気力がわいてきません。

そんなことはどうでもいいから質問に答えろと言う話であれば、他の方の配当をお待ちください。




[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89412 ] / ▼[ 89419 ]
■89414 / 17階層)  Re[17]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ BVL (1回)-(2018/11/27(Tue) 13:02:19)
> TextBox ということはユーザー入力ですよね? であれば、上で紹介されているデーターソース
> 構成ウィザードを使って普通に作れば、ユーザー入力は直接 DataGridView に入力すればよく、
> DB へ反映したければボタンクリックだけでできます。

多分、DataGridViewはあくまでもReadOnlyのリスト表示だけであって、
ユーザ入力はテキストボックス、てことなのでしょう。
確かにグリッドにユーザが直接入力できれば開発側は楽だけど、
テキストボックスにIDを入力して、それを確定してグリッドに表示する、
という仕様なのでしょう。
仕様を決めるのは作成者だけではないので、色々と事情があるのでしょう。
僕もグリッドへの直接の入力は好きじゃない。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89414 ] / ▼[ 89421 ] ▼[ 89423 ]
■89419 / 18階層)  Re[18]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ VB.net Biginner (11回)-(2018/11/27(Tue) 19:39:11)
VB.net Biginner さんの Web サイト
> 多分、DataGridViewはあくまでもReadOnlyのリスト表示だけであって、
> ユーザ入力はテキストボックス、てことなのでしょう。
それがまさに今やりたいことです。

> ユーザー入力は直接 DataGridView に入力すればよく、
部屋ごとのDataGridViewは注文されたものを
後で部屋ごとのFormを開いたときに注文履歴をリスト表示して見れるようにしたいだけで、
入力は注文Formからできるようにしたいです。。
これは見当違いに当てはまりますか、、?
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89419 ] / 返信無し
■89421 / 19階層)  Re[19]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ Jitta (429回)-(2018/11/28(Wed) 08:44:57)
No89419 (VB.net Biginner さん) に返信

プログラムを作りながらコードを書かないように。
プログラムを作ってから、プログラムをコードに翻訳してください。
プログラムとは、コンピュータが、人のどのようなアクションに対して、どの様に計算をして、どの様なフィードバックをするかを決めたものです。
今、「プログラム」と書きましたが、普通は「仕様」と言われます。
ウェブ掲示板で質問するには、コンピュータにさせたいことを、他人に説明できなければなりません。
皆がエスパーではありません。
日本語は、なんらかの情報を共有する聞き手に考えることを要求する言語ですが、コンピュータは自分で考えることはできないので、日本人に話すようにコンピュータに話しかけてもコンピュータは理解してくれません。
掲示板でも同じです。
掲示板の向こうの人とは情報を共有していないので、考えることを要求してはいけません。
まず、仕様を固め、伝えることができるようになってください。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89419 ] / ▼[ 89424 ]
■89423 / 19階層)  Re[19]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ WebSurfer (1681回)-(2018/11/28(Wed) 10:50:35)
No89419 (VB.net Biginner さん) に返信

> 部屋ごとのDataGridViewは注文されたものを
> 後で部屋ごとのFormを開いたときに注文履歴をリスト表示して見れるようにしたいだけで、
> 入力は注文Formからできるようにしたいです。。

何となくやりたいことが分かったような気がする。

回転寿司や居酒屋などにあるタッチパネル式の注文システムでは、

(1) 客がタッチパネルに表示されたメニューを選んで注文する、
(2) 注文受諾の応答が返ってくる(そのあと注文品が運ばれてくる)、
(3) 客が注文履歴を見たい場合はタッチパネルの注文履歴メニューをクリックする、
(4) タッチパネルに注文一覧が表示される。

・・・というようになっているのが多いと思います。

で、今回、質問者さんは、Windows Forms アプリで上記システムをまねて、

(1) Form1 上に配置された TextBox に入力して Button クリックすること注文する、
(2) と (3) はスキップして即 (4) に飛ぶ、
(4) Form1 とは別に Form2 を表示し、その中の DataGridView に注文履歴を表示する。

・・・というようにしたいうことですか?

> これは見当違いに当てはまりますか、、?

であれば、TextBox の注文データを直接 DataGridView に反映するというのは、的外れ&
見当違いです。

注文履歴は SQL Server に保持するということですが、それなら (1) で注文データをデー
タベースに INSERT し、(4)でデータベースより注文履歴一覧を取得して表示するように
すべきです。

最新の注文を注文履歴一覧の一行目に持ってくると言うような、順序の指定は、テーブル
のスキーマをそれなりに考えて作って、Select クエリに Order by 句を使えば何とでも
なるはずです。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89423 ] / ▼[ 89425 ]
■89424 / 20階層)  Re[20]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ PANG2 (248回)-(2018/11/28(Wed) 11:01:50)
基礎が出来ていないのに応用問題に挑戦しているのが問題でしょう。
まずは、入門書で一通り勉強するのをお勧めします。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89424 ] / ▼[ 89433 ]
■89425 / 21階層)  Re[21]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ リンクス (1回)-(2018/11/28(Wed) 11:30:41)
オレは松●のタッチパネル食券販売機を想像した。
(オレはこのタッチパネルはあまり好きではなく、スマホ注文しているが、それはさて置き、)
この食券販売機はタッチパネルでメニューを選び、
選んだ内容がモニター右のリストに表示される。
ただしこの状態は確定ではなく、各行の取り消し(削除)も可能。
この場合、すべてが確定してからDB登録すべきで、
その場合であれば、確定前データをDataGridViewに直接入れてもOKだと思うが、
DBを使うことは前提としてあるので、この考えは古いのかな?

もちろん、これはあくまでも入力時の話ね。
部屋毎の注文履歴は確定データなのだから、
グリッドに表示するにはDBのデータバインド。
[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89425 ] / ▼[ 89535 ]
■89433 / 22階層)  Re[22]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ せば (10回)-(2018/11/28(Wed) 17:28:38)
解決方法ではありません。
ちょっと整理

No89375
> DataGridView1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
にて一旦解決かと思われたが

No89405
にて、DataGridView追加した内容が消えるので解決には至らなかった。
但し、ソースもないのでなぜ消えたかは回答者にはまったく状況が分からない。

その後
> 今は部屋ごとにデータベース(.mdf)、データセット(.xsd)を作成して、注文Formのボタンから部屋ごとのデータテーブルにデータを追加して、それをDataGridViewにバインディングして表示しようと試みています。

とあるので、データベースに追加し、データベースから表示する方向に転進?
内容が消える事に対する対応策???

とりえず、部屋ごとに「.mdf」ファイルを作成するのはおかしいです。
というか「mdf」って事は「SQL Server」なのでしょうか?

まず、どのような環境下で実行するのか整理しみては如何でしょうか?

次にDBで使用するのであれば、PANG2さんが
No89377で提案されている内容で、色々やってみてはどうでしょうか?

追伸、いきなり完成系で作成するのは難しいですよ。
1ステップづつ進めていくのが良いと個人的には思います。



[ 親 89287 / □ Tree ] 返信 編集キー/

▲[ 89433 ] / 返信無し
■89535 / 23階層)  Re[23]: Re: Form1のテキストボックスの内容をForm2のDG
□投稿者/ VB.net Biginner (12回)-(2018/12/02(Sun) 23:13:56)
数日の間SQLの勉強を少しずつ進めていました。

無事にテキストボックスに入力した注文データをデータベースに追加して、
データベースから注文履歴を取得してデータグリッドビューに表示できました。

次回は仕様や環境をもう少し詳細に伝えれるようにします。
多くの御意見、御提案ありがとうございました。
解決済み
[ 親 89287 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -