0

データを列に表示するデータグリッドビューがあります。私が達成しようとしているのは、行を選択して編集ボタンを押した後、新しいフォームが開き、正しいテキスト ボックスの行を分割してデータを更新することです。

datagridview 行には、名前、電子メール、日付など、さまざまな種類のデータが表示されます。

何か案が?前もって感謝します!

4

2 に答える 2

2

DataGridView 列に対応するプロパティを持つ MyDataCollection などのクラスを作成できます。[編集] ボタンを押したら、このクラスの新しいインスタンスを作成し、必要なデータを入力して、パラメーターとして EditForm のコンストラクターに渡します。

public class MyDataCollection
{
    public string Name;
    public string Email;
    // -- 
}

メインフォームで:

void btnEdit_Click(object sender, EventArgs e)
{
    // Create the MyDataCollection instance and fill it with data from the DataGridView
    MyDataCollection myData = new MyDataCollection();
    myData.Name = myDataGridView.CurrentRow.Cells["Name"].Value.ToString();
    myData.Email = myDataGridView.CurrentRow.Cells["Email"].Value.ToString();
    // --

    // Send the MyDataCollection instance to the EditForm
    formEdit = new formEdit(myData);
    formEdit.ShowDialog(this);
}

編集フォームは次のようになります。

public partial class formEdit : Form
{
    // Define a MyDataCollection object to work with in **this** form
    MyDataCollection myData;

    public formEdit(MyDataCollection mdc)
    {
        InitializeComponent();

        // Get the MyDataCollection instance sent as parameter
        myData = mdc;
    }

    private void formEdit_Load(object sender, EventArgs e)
    {
        // and use it to show the data
        textbox1.Text = myData.Name;
        textbox2.Text = myData.Email;
        // --
    }
}

MyDataCollection クラスを忘れて、DataGridViewRow 全体を formEdit のコンストラクターに渡すこともできます。

于 2012-05-02T10:48:13.940 に答える
2

このサイトでは、フォーム間でデータを送信する方法について説明しています。データグリッドで適切なセルを選択し、その情報をすべての適切なテキスト ボックスに送信するのと同じくらい簡単です。その後、それらを送り返します。フォーム間のデータ

基本は、値を取得するために使用できるメソッドを作成することです。

    public string getTextBoxValue()
{
    return TextBox.Text;
}

次に、メソッドを呼び出してフォーム間でデータを渡すことができます。

this.Text = myForm2.getTextBoxValue();

ただし、セルの値を送信し、メソッドの戻り値に等しい textbox.text を作成します。これは理論の基本的な例です。希望どおりに機能するように自分で試してみてください。できない場合は、戻ってきて助けを求め、コードを編集してください。ただし、最初に自分で試した後でのみです

于 2012-05-02T09:55:35.700 に答える