このカスタム クラスのリストがあります。
public class Item
{
public string @Url;
public string Name;
public double Price;
public Item(string @url, string name, double price)
{
this.Url = url;
this.Name = name;
this.Price = price;
}
public void setPrice(Button button)
{
this.Price = Convert.ToDouble(button.Text);
}
}
今、私のメインのwinformでこれが宣言されています
List<Item> items = new List<Item>();
フィールドは、次のように追加ボタンを介して設定され、3 つのテキスト ボックスから情報を取得し、新しいアイテムに保存します。
Regex url = new Regex(@"^[a-zA-Z0-9\-\.]+\.(com|org|net|ca|mil|edu|COM|ORG|NET|CA|MIL|EDU)$");
Regex name = new Regex(@"^[0-9, a-z, A-Z, \-]+$");
Regex price = new Regex(@"^[0-9, \.]+$");
if (url.IsMatch(urlText.Text) && name.IsMatch(nameText.Text) && price.IsMatch(priceText.Text))
{
itemListBox.Items.Add(nameText.Text);
double item_Price = Convert.ToDouble(priceText.Text);
items.Add(new Item(@itemURL.Text, itemName.Text, item_Price));
nameText.Clear();
priceText.Clear();
urlText.Clear();
}
else
{
match(url, urlText, urlLabel);
match(price, priceText, priceLabel);
match(name, nameText, nameLabel);
}
上記のコードからわかるように、アイテム リスト ボックスにアイテムの名前も追加されます。これで、編集ボタンをクリックするとポップアップする別のウィンドウ フォームができました。編集フォームのアイテム リスト ボックスを、メイン ウィンドウ フォームのアイテム リスト ボックスとまったく同じように表示するにはどうすればよいですか?
基本的な質問では、アイテムのリストを編集フォームに転送するにはどうすればよいですか。winformに関係なく編集された情報を一定に保ちたいので、コンストラクターを介して渡してみました。コンストラクターは編集フォームで宣言されました:
public Edit(List<Item> i)
{
itemList = i;
InitializeComponent();
}
リストボックスをロードしたとき
foreach (Item i in itemList)
{
itemListBox.Items.Add(i.Name);
}
リスト ボックスには、name の実際の値ではなく Name が表示されます。
更新 1:
更新 2:
私のメインのwinformコードhttp://pastebin.com/mENGKdnJ
winform の編集コードhttp://pastebin.com/tvp95jQW
ファイルを開くダイアログに注意を払わないでください コーディングの方法はまだわかりません。これまでのところ、このプログラムのコーディングは多くのことを教えてくれました。