0

おそらく複雑な質問ですが、ここで期待しています

データセット内のテーブルを交換するだけで、単一のフォーム (データセットから必要なテーブルを表示) に汎用データ グリッドがあります。

特定のレコードをダブルクリックして、現在選択されているレコードがデフォルトとして表示されているテーブル データの単一レコード ビューを表示したいが、ページをめくったり、他のレコードを編集/表示/削除するオプションがある。

実行時に特定のテーブルのデータグリッドから詳細ビュー フォームを自動的に作成したいと考えています。フォームは動的に作成する必要があります。バインディング ソース/バインディング ソース ナビゲーターを使用して単一のレコードをページングするオプションを使用して、詳細ビューにデータセットを表示します。

私の目標は、アプリケーションの効率/保守性を向上させることです。10 以上のフォームを作成して管理するのではなく、一般的なグリッドビュー フォームを管理するのと同じ方法で、一般的な詳細フォームを作成して管理したいだけです。

これまでのところ、私は思いついた:

public void CreateDetailsForm(BindingSource bs, int rowClicked) { フォーム detailsForm = new Form();

        BindingSource newFormBS = new BindingSource();

        //assign binding source for use on new detailsForm
        newFormBS = bs;

        //assign binding source to datatable
        DataTable dt = (DataTable)bs.DataSource;

        //create the form fields
        CreateFormFields(dt);  //not yet implemented

        //assign form fields to form

       //display form

}

次のヘルプをいただければ幸いです

  1. フォーム フィールドの生成とフォームへの割り当て。

前もって感謝します。

4

3 に答える 3

0

それが好きです:

Form f=new Form();

        TextBox t=new TextBox();//generate the controls u need
        t.Text = "test";//set the actual value
        t.Location=new Point(10,10);
        f.Controls.Add(t);

        DialogResult dr=f.ShowDialog();
于 2013-05-09T06:17:41.030 に答える
0

これまでのところ、次のようにフォームで生成された列名を取得しています

リスト colNames = GetColumnNames(dt);

        int offset=25;
        int xPos=50;
        int yPos = 10;
        foreach (string name in colNames)
        {
            Label l = new Label();
            l.Name = name;
            l.Width = 200;
            l.Text = name;


            TextBox t = new TextBox();
            t.Name = name; 
            t.Width=200;

            l.Location = new Point(xPos, yPos );
            t.Location = new Point(xPos+250, yPos);


           f.Controls.Add(l);
           f.Controls.Add(t);

           yPos = yPos + offset;
        }
        //TextBox t = new TextBox();//generate the controls u need
        //t.Text = "test";//set the actual value


        f.Width = 800;
        f.Height = 600;
        f.Show();


    }

    private List<string> GetColumnNames(DataTable table)
    {
        List<string> lstColNames=new List<string>();

        if (table != null)
        {

             lstColNames=

                (from DataColumn col in table.Columns

                 select col.ColumnName).ToList();



        }

        return lstColNames;



    }

コントロールをバインディング ソースにバインドする作業を行っています。

于 2013-05-09T06:40:31.707 に答える