私はプログラムで行を追加できるdataGridViewをform1に持っており、その値をすべて取得して、それを1つ1つデータベースに挿入してください。C#DataGridViewのすべての行の値を取得して別のフォームに渡す方法
答えて
ここには最小限ですが、実際の例があります。
メソッドがタイプを入力パラメータとして期待している限り、任意のメソッドに任意の型を渡すことができます。
ます。private void doSomethingの(文字列withThisString)
そのメソッドの宣言では、私は、メソッドがプライベート別名このクラスへのアクセスのみ ある
- ...と宣言
- メソッドが返されます
void
別名は何も返しません - メソッド名が
DoSomething
- 方法では、あなたがあなたのケースに似た何かをしたい
string
パラメータ
を期待しています。しかし、あなたは...あなたがパラメータとしてstring
を渡すことを望ましくない場合、DataGridViewRow
を渡したいと思います...実際には、... 複数の行を渡したいので、List<DataGridViewRow>
の行を集計させてください単一の行を渡すのではなく、行のリストを渡します。
List<DataGridViewRow> listofrows = new List<DataGridViewRow>();//we'll agregate our desired rows in this
//itterate through the rows of the DataGridView
foreach (DataGridViewRow item in dgv1.Rows)
{
DataGridViewRow r = (DataGridViewRow)item.Clone();//clone the desired row
//Oddly enough... cloning does not clone the values... So lets put the values back in their cells
for (int i = 0; i < item.Cells.Count; i++)
{
r.Cells[i].Value = item.Cells[i].Value;
}
listofrows.Add(r);//add the row to the list
}
また、あなたはForm2のを「初期化」の責任があるメソッドに渡したい、DoSomething
にそのパラメータを渡すことにしたくありません。あなたは私たちが()
で見ることができるように...フォームのコンストラクタがこの
public Form2()
{
InitializeComponent();
}
public Form2()
のように書かれている新しいフォームを作成するときにデフォルトで
は、この方法が動作する任意のパラメータを期待されていません。実際には、あなたがしたい場合でも、その方法は何の準備もできていないので、何も渡すことができませんでした。それはちょうどだけで ...
に動作します。しかしあなたには、いくつかのDataGridViewRow
周りを渡したいので、私たちは()
で見ることができるように、この方法は、現在あるメソッド宣言ビット
public Form2(List<DataGridViewRow> dgvc = null)
{
InitializeComponent();
}
public Form2(List<DataGridViewRow> dgvc = null)
を変更できます動作するにはList<DataGridViewRow>
を受け取ることを期待しています。
今、Form2
は、私が持っているパラメータを期待しています...行のリストを作成したら、それを使うことができます!
//Make an instance of Form2, passing it the list of Rows we just created
Form2 f2 = new Form2(listofrows);
f2.Show();//show the form
と言われています。あなたの目標を達成するために、ハイレベルで、あなたは
List
に必要な行を蓄積したり、- 反復する必要はForm2をパラメータとして
List
を渡します - はForm2のは、着信
List
DataGridViewRow
のFoをして、あなたが好きなタスクを実行していrm1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace DataGridViewRowsToForm2_46306622
{
public partial class Form1 : Form
{
DataGridView dgv1 = new DataGridView();
BindingList<dgventry> dgv1Data = new BindingList<dgventry>();
Button btn = new Button();
public Form1()
{
InitializeComponent();
InitializeGrid();
AddButton();
AddData();
}
private void AddButton()
{
btn.Location = new Point(5, dgv1.Location.Y + dgv1.Height + 5);
btn.Text = "Click to pass rows";
btn.Click += Btn_Click;
this.Controls.Add(btn);
}
private void Btn_Click(object sender, EventArgs e)
{
List<DataGridViewRow> listofrows = new List<DataGridViewRow>();
foreach (DataGridViewRow item in dgv1.Rows)
{
DataGridViewRow r = (DataGridViewRow)item.Clone();
for (int i = 0; i < item.Cells.Count; i++)
{
r.Cells[i].Value = item.Cells[i].Value;
}
listofrows.Add(r);
}
Form2 f2 = new Form2(listofrows);
f2.Show();
}
private void AddData()
{
for (int i = 0; i < 5; i++)
{
dgv1Data.Add(new dgventry
{
col1 = "row " + i,
col2 = i.ToString(),
col3 = i.ToString()
});
}
}
private void InitializeGrid()
{
dgv1.Location = new Point(5, 5);
dgv1.DataSource = dgv1Data;
this.Controls.Add(dgv1);
}
}
public class dgventry
{
public string col1 { get; set; }
public string col2 { get; set; }
public string col3 { get; set; }
}
}
にForm2.cs
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace DataGridViewRowsToForm2_46306622
{
public partial class Form2 : Form
{
//Have a form constructor that accepts your GridViewRows as argument
public Form2(List<DataGridViewRow> dgvc = null)
{
InitializeComponent();
TextBox txtbx = new TextBox();
txtbx.Location = new Point(5, 5);
if (dgvc != null)
{
//iterate through the rows and do what you want with them
foreach (DataGridViewRow item in dgvc)
{
txtbx.Text += item.Cells[0].Value + "/";
}
}
this.Controls.Add(txtbx);
}
}
}
一部の人々は代わりにDataSource
を渡すことをお勧めします。確かに、それはあなたのDataSource
がDataGridView
の内容と一致している限り、うまくいくでしょう。常にそうであるとは限りませんので、それに応じて毒を選んでください。
- 1. 別のフォームにdatagridviewの値を渡す
- 2. c#:データベースからデータを取得して別のフォームに渡す方法は?
- 3. Datagridviewはすべての行から値を取得します
- 4. フォームから値を渡し、C#を使用して別のフォームのDataGridViewで表示
- 5. C#データテーブルから値を取得してJavaScriptに渡す方法
- 6. カーソルアイコンのビットマップとしてDataGridView行を取得する方法は?
- 7. あるフォームの値を別のフォームのコンボボックスに渡す方法
- 8. 別のフォームからdatagridviewを渡す
- 9. Hashmapの値を取得してVolleyのResponseListenerに渡す方法
- 10. Listに基づいてDataGridViewから行の値を取得する方法
- 11. DataGridViewのラベルから値を取得する方法C#
- 12. DataGridViewの行をダブルクリックして、C#の別のDataGridViewの列を表示します
- 13. 値を取得する方法onListItemClickと別のアクティビティに渡す
- 14. 重複名のすべてのIDを取得してテーブルに渡す方法
- 15. 別のフォームにdatagridviewの値を送信
- 16. 別のフォームでhiddenfieldの値を取得する方法
- 17. C#選択したDataGridview行の値をあるフォームから別のフォームのDataGridviewの行にコピーするにはどうすればよいですか?
- 18. DataGridviewデータを別のDataGridViewに渡す 'System.NullReferenceException'
- 19. 取得リクエストでカラーコード値を渡して取得する方法
- 20. c#datagridview doubleclick別のフォームにデータをロード
- 21. テーブル行をクリックしてすべてのセルの値を取得
- 22. JSONクラスのすべての子ノードの値を取得する方法C#
- 23. asp.netの別のWebフォームにデータを渡す方法C#?
- 24. C#:DataGridViewからの値の取得
- 25. C#のリストボックスの値を渡して取得する.net Windowsアプリケーション
- 26. 別のフォームから値を取得する方法
- 27. SQL:すべての行の列の値を単一の値として取得する方法は?
- 28. LINQ XML別のフォームからコンボボックスの値を取得するC#
- 29. C#Oracleデータベースのすべてのデータを取得する方法
- 30. WindowsアプリケーションでC#を使用して値を1つのフォームから別のフォームに取得する
これまでのコードを表示してください –
データソースまたはグリッド行をループして追加し、コンストラクタまたはパブリックプロパティを使用して新しいフォームに情報を渡します。あなたがもっと助けが必要な場合は、最初にコードを表示しなければなりません... – LarsTech
[datagridviewをあるフォームから別のフォームに渡します](https://stackoverflow.com/questions/32033325/pass-datagridview-from-one) -form-to-another-c-sharp) – Deja