2017-05-29 9 views
1

私は、DataGridviewコントロールと4つのテキストボックスを持つアプリケーションを作成しています。c#前のアクションのパラメータを渡す

アプリケーションの要件の1つは、ユーザーがデータグリッド内の行をダブルクリックすると、4つのテキストボックスが対応するテキストボックスでデータで満たされていることです。これはすでに完了しています。ユーザがフィールドを編集しOKをクリックすると、それらはdatagridviewに保存されます。

一方、「Add Register」というボタンをクリックすると、同じボタンが有効になり、「OK」をクリックすると、テキストボックス内のデータを含む新しいレジスタが作成されます。

問題は、どうやって行を編集してOKをクリックしたときに新しい行を追加すべきかを知ることができなかったことです。

つまり、ユーザーが「OK」を押したときに「編集」リクエストまたは「登録を追加」リクエストから来ているかどうかをどのように知ることができますか?

ありがとうございます!

+0

「OK」とは何ですか?それはボタンですか?どのGUIフレームワークを使用していますか? WinForms? WPF?他に何か? WinFormsの場合、オブジェクトには使用できる '.Tag'プロパティがあります。また、追加/編集を開始するときに、現在の編集タイプをクラスオブジェクトに格納することもできます。 – john

+0

datagridviewにはeditというプロパティがあります。真の場合、空の行がDGVに追加されるので、新しいデータを編集することができます。したがって、選択した行がDGVの最後の行の場合は、行を追加します。それ以外の場合は、選択した行を変更します。 – jdweng

答えて

2

ようこそStackOverflow。 これを実現する最も簡単な方法は、フォームにブール値のフィールドを入れることです。 bool isEdit。ユーザーがDataGridView内の行(作業中のハンドラ)をダブルクリックすると、フィールドがtrueに設定されます。 Add registerボタンハンドラ内で、フィールドをfalseに設定します。 OKハンドラ内で、追加または編集している場合は、isEditフィールドの値を調べてください。

私はこのようなDataGridViewフォームの多く(非常にたくさん!)を行っています。個人的に私はフォームをデータ入力と組み合わせるのは嫌いです。私はDataGridViewフォームを完全な読み取り専用のままにしておき、ユーザーがボタンの編集や追加をクリックすると、データ入力を処理する別のモーダルフォームを表示します。モーダルフォームから保存すると、グリッドがリフレッシュされます。

HTH

関連する問題