應用程序的高級視圖是:修改數據綁定組合框在運行時
- Form1中顯示在一個DataGridView客戶機信息(從DB拉動)。
- 我從位於客戶端類的屬性中的DataGridView中保存客戶端的信息。
- 從Form1中,用戶可以單擊實例化Form2的按鈕,並允許修改客戶端的信息。
- Form2的構造函數有一個Client對象作爲參數。該對象是保存來自Form1的所有客戶端信息的東西。使用這個對象,我可以重新填充我希望用戶能夠在Form2上編輯的字段。
有在保持所有的情況下類型(即CaseType1,CaseType2,CaseType3)的數據源的表。
然後,我使用ComboBox並在實例化窗體時使用來自DataSource的所有案例類型填充它。我的組合框設置如下:
DataSource:設置爲我的CaseTypeBindingSource,它具有我需要的列和數據。 DisplayMember:正在使用的查詢結果。 ValueMember:正在使用的查詢結果。 (與DisplayMember相同) SelectedValue:我嘗試過使用「none」,並使用與DisplayMember和ValueMember相同的值。
這裏的問題:
在運行時,我希望能夠來指派被帶到了從Form1中作爲當前的組合框(的SelectedItem)選擇的項目客戶的案件類型。
我只能將案例類型分配給文本框並完成它。但想法是,我希望表單向用戶顯示客戶的案例類型,並允許他/她通過使用ComboBox來更改它。
ComboBox名稱是CaseTypeComboBox。持有案例類型信息及其屬性的對象是client.CaseType。
我試過在構造函數中執行以下操作:
CaseTypeComboBox.SelectedItem = client.CaseType;
我也嘗試創建一個類變量在Form2的叫origCaseType,分配client.CaseType值在構造函數中origCaseType類變量。然後在Form2_Load(...)事件觸發時執行以下操作:
CaseTypeComboBox.SelectedValue = origCaseType;
有沒有人對此有任何想法?任何類似的經歷?
請讓我知道,如果有什麼需要澄清,任何幫助表示讚賞。
在此先感謝!
TS
「窗體2」 構造:
public ModifyCase(Client client)
{
InitializeComponent();
CaseNumberTextBox.Text = client.CaseNumber;
LoadStatusComboBox(client.Status);
LoadIsClosedRadioButton(client.IsClosed);
LoadIsInStorageRadioButton(client.IsInStorage);
LastModifiedTextBox.Text = client.LastModified.ToString();
NotesTextBox.Text = client.Notes;
origCaseType = client.CaseType;
}
「窗體2」 Load事件:
private void ModifyCase_Load(object sender, EventArgs e)
{
//Fills the ComboBox box with case types
this.case_typesTableAdapter1.Fill(this.testDataSet1.case_types);
//Attempts to set value for client's case type from Form1
CaseTypeComboBox.SelectedValue = origCaseType;
//Just to help me see what these variables are holding to figure
//out the problem...
MessageBox.Show(origCaseType);
MessageBox.Show(CaseTypeComboBox.SelectedIndex.ToString());
}
所以是你無法在Form2中設置正確的組合框值的問題的癥結所在?你能發佈你的Form2代碼與你的組合框有關嗎 – wdavo 2012-02-15 23:01:18
是的,問題的關鍵是我無法在Form2中的ComboBox上使用從Form1中引入的信息設置正確的案例類型。我發佈了一些更多的代碼,讓我知道如果這有幫助,或者如果你需要特定的其他東西。 – ThiagoNSiq 2012-02-16 02:00:09
你可以添加MessageBox.Show(CaseTypeComboBox.Items.Count.ToString());在.Fill聲明之後,讓我知道它是什麼。我懷疑它會是0,這意味着當你試圖設置SelectedValue時,你的ComboBox尚未更新。 – wdavo 2012-02-16 02:29:36