コードを本当に再利用できるようにするには、表示(ビュー)とデータを厳密に分離しておく必要があります。
データベースがあるとは言いませんでした。この言及の欠如は、この分離の始まりです。アカウントのリスト、辞書、またはアプリケーションで編集したい項目を含むテキストファイルがあれば、問題は似ています。
Accounts
のコレクションを編集するとします。このコレクションにアカウントを追加したり、このコレクションの既存のアカウントのデータを変更したりできます。
この機能は、ICollection<Account>
の機能に似ています。
だから、Form1
が知る必要があるのは、ICollection<Account>
を保持しているということです。何らかの形で初期化中にForm1
はAccountsコレクションを読み込みます。オペレータが[Add]を押すと、Form2
が開き、新しいアカウントに必要な値を入力できます。オペレータはOK
またはCancel
のいずれかを選択して、このアカウントをコレクションに追加するかどうかを指定します(フォームの[保存]ボタンを使用すると、Windows標準ではなく、不明確なので使用しないでください)。
(パスワードのためのIDのためのテキストボックスとテキストボックスを持つフォームを作成するVisual StudioのデザイナでForm2
にForm1
private ICollection<Account> existingAccounts;
void OnButtonAdd(object sender, ...)
{
using (var form = new Form2())
{
form. ...// fill any needed values
// show form2 and check if OK or Cancel:
var dlgResult = form.ShowDialog(this);
// only add if OK pressed, otherwise ignore
if (dlgResult == DialogResult.OK)
{
this.existingAccounts.Add(form.Account);
}
}
}
のCondでアカウント
コードを追加します。それはパスワードのプロパティを与えるので、表示されます*****)
OKを追加キャンセルボタンがあります。これらのボタンのDialogResultプロパティに適切なOKとCancelの値を与えます。
最後に入力された値を取得するために、1つのプロパティを追加します。
public Account Account
{
get
{ // extract the values from the display
return new Account()
{
Id = this.TextBoxId.Text,
Pwd = this.TextBoxPwd.Text,
};
}
}
編集既存のアカウント
あなたはまた、既存のアカウントを編集するボタンがあります。最後に追加したアカウントだけを編集したいのですか、既存のアカウントを編集したいですか?
後者の場合、オペレータがその中から1つを選択できる既存のアカウントをすべて表示する必要があります。 DataGridViewまたはBindingSourceを使用している可能性があります。おそらく次のような関数になるでしょう:
Account GetSelectedAccount() {...}
既存のアカウントを編集するフォームは、新しいアカウントを作成するフォームに似ています。あなたは本当にそれのために同じフォームを使用することを検討する必要があります。 Form1ので
public Account Account
{
get
{ // extract the values from the display
return new Account()
{
Id = this.TextBoxId.Text,
Pwd = this.TextBoxPwd.Text,
};
}
set
{
this.TextBoxId.Text = value.Id;
this.TextBoxPwd.Text = value.Pwd;
}
}
、編集を押したとき:I上記の例のよう
void OnButtonEdit_Click(object sender, ...)
{
using (var form = new FormEdit())
{
Account accountToEdit = this.GetSelectedAccount();
form.Account = accountToEdit;
// or: GetLastAddedAccount if you only want to edit the last added one
var dlgResult = form.ShowDialog(this);
if (dlgResult == DialogResult.OK)
{ // extract the edited Account from the form:
Account editedData = form.Account;
this.UpdateSelectedAccount(editedData);
}
}
}
は通常、挿入および抽出アカウントの代わりに別途プロパティをアカウントごとにアクセスするプロパティとのインタフェースを持っていることを決定します。これにより、このアカウントのすべての(ソフトウェア)ユーザを変更することなく、アカウントの内部を変更することができます
これまでに試したコードを共有してください@ Jonathan Niixtay –
そのためには、すなわちユーザー名とパスワード。 – Pirate
そして...あなたの実際の問題がどこにあるかをもっと詳しく説明してください。 –