これはとても基本的な質問だと思いますが、2日間かけてうまく機能させようとしましたが、うまくいきませんでした。お時間をいただきありがとうございます。
問題定義
- Visual Studio Express 2012 - Visual C# Windows フォーム プロジェクト
- クラスとメンバー
- マイフォーム (
Form
)- myListBox -
ListBox
- myListBox -
- MyDataElement
- ファーストネーム -
string
- 苗字 -
string
- ファーストネーム -
- MyDataManager
- myDataList -
List<MyDataElement>
- myDataList -
- マイフォーム (
GUI を使用して、どのようにバインドできmyListBox
ますmyDataList
か? より具体的には、リストの値が入力さMyDataManager
れるようにインスタンス化するにはどうすればよいですか?myListBox
すでに実行済みの手順
問題なく DataSource を作成できますが、ListBox に基になるリストの内容を表示させることができません。私が試してみました:
- ListBox をスタンドアロン
MyDataManager
オブジェクトにバインドする MyForm
タイプのメンバーを作成しMyDataManager
、ListBox をそのメンバーにバインドする
どちらも機能しませんでした。また、DisplayMember プロパティを無駄に変更しようとしました。
myListBox.DataSource = myDM.myDataList
ちなみに、のメイン メソッドでDataSource (例: ) を手動で設定することで、適切に機能させることができますMyForm
が、今後の参照と私自身の教育のために、GUI を使用してこれを行う方法を学びたいと思います (可能であれば)。 .
サンプルコード
public class MyDataElement
{
public string firstName { get; set; }
public string lastName { get; set; }
public override string ToString()
{
return firstName + " " + lastName;
}
}
public class MyDataManager
{
public List<MyDataElement> myDataList { get; set; }
// Constructor.
public MyDataManager()
{
myDataList = new List<MyDataElement>();
// Populate list for testing purposes.
myDataList.Add(new MyDataElement { firstName = "John", lastName = "Smith" });
myDataList.Add(new MyDataElement { firstName = "Jane", lastName = "Doe" });
}
}
のメインメソッドではMyForm
:
// ...
myDM = new myDataManager();
InitializeComponents();
// ...
この順序を逆にしてみました。