2

Windows フォーム アプリケーションに関するコードに問題があります。ユーザーがデータベースに新しいレコードのデータを入力する必要があるフォームがあります。データベースに新しい「注文」を正常に作成できます。それを行った後、注文のすべての詳細をユーザーに表示するフォームを開きたいと思います。したがって、既存のウィンドウを取得し、bindingSource を特定の位置にジャンプさせたいと考えています。私のコードは次のとおりです。

「新規注文フォーム」

//do stuff for the creation
//open a customerDetails window with the new entry
//resolve index of the new item
int newIndex = ordersBindingSource.Find("OrderID", newOrderID);
//create a new window and pass the index in the constructor
Order orderDetailsView = new Order(newIndex);
//show the new window and dispose the old one
orderDetailsView.Show();
this.Close();
this.Dispose();

私が呼んでいる「注文フォーム」コンストラクター:

public Order(int newIndex)
{
    //initialize
    InitializeComponent();
    //set index and repaint
    this.ordersBindingSource.Position = newIndex;
    this.ordersBindingSource.ResetCurrentItem();
}

これは単に機能しておらず、データセットの最初のエントリを取得しています。私は何を間違っていますか?

4

1 に答える 1

1

「注文フォーム」から BindingSource をどこで初期化しますか? newIndex <= ordersBindingSource.Count() であることを確認してください。

これを試して:

    //Form Order
    int currentOrder = 0;

    //constructor
    public Order(int newIndex)
    {
        //initialize your variable here
        currentOrder = newIndex;

        //initialize
        InitializeComponent();
    }

    //Create a void method that sets the BindingSource position
    void SetupForm()
    {
         ordersBindingSource.Position = currentOrder;
    }

    // Override the OnLoad event and call the SetupForm() method here
    protected override OnLoad(EventArgs e)
    {
         SetupForm();
    }
于 2013-03-29T10:12:20.950 に答える