2012-05-18 64 views
0

我已經將用戶提交的內容加載到我們的辦公室的c#winform中,以便在正式​​添加到數據庫之前進行處理。用戶可以將「推薦人」提交爲兩個文本字段 - 名字和姓氏。在辦公室裏,我希望有一個組合框,所有現有的引用程序都會加載,然後是名稱的前幾個字母,以將組合框向前推到需要的區域。我想要做這樣的事情,拿着名字的前兩個字母,並用它來初始化組合框。從文本框中設置組合框文本

if (txtrefFirstName.TextLength > 2) 
{ 
    string firstStart = "" + txtrefFirstName.Text[0] + txtrefFirstName.Text[1]; 
    firstStart = firstStart.ToUpper(); 
    ddlReferring.SelectedText.StartsWith(firstStart); 
} 
else 
    ddlReferring.Text = ""; 

任何想法或建議,以使其工作?

感謝

大衛K.

+2

你得到什麼錯誤? – jams

+0

您是直接在組合框中還是在單獨的TextBox控件中鍵入名稱? – Samir

+0

你必須在ddlReferring上做一個foreach循環,然後檢查項目StartsWith(firstStart)然後選擇它。 – banging

回答

2

你可以寫這樣的事情...

foreach (string item in ddlReferring.Items) 
{ 
    if (item.StartsWith(firstStart)) 
    { 
     ddlReferring.SelectedText = item; 
     break; 
    } 
} 
+0

這讓我朝着正確的方向發展,稍作改動,發佈在編輯中。 –

1

假設DDL的數據源是String對象的列表,你應該能夠做一些比較數據源本身。我傾向於使用Linq來處理這樣的事情,但並不是絕對必要的,只是更短。

if (txtrefFirstName.TextLength > 2) 
{ 
    string firstStart = txtrefFirstName.Text.Substring(0,2).ToUpper(); 
    string Selection = ddlReferring.DataSource.Where(a=>a.StartsWith(firstStart)).FirstOrDefault(); 
    ddlReferring.SelectedText = Selection ?? ""; 
} 
else 
    ddlReferring.Text = ""; 

選擇線也可以來自於項目收集直接

string Selection = ddlReferring.Items.OfType<string>().Where(a=>a.StartsWith(firstStart)).FirstOrDefault(); 

或者,如果你真的不想使用Linq ...

string Selection = ""; 
foreach (object item in ddlReferring.Items) 
    if (item.ToString().StartsWith(firstStart)) 
    { 
     Selection = item.ToString(); 
     break; 
    } 

類似的方法可以使用,甚至如果ddl的數據不是字符串列表,只要確保適當地轉換項目並比較正確的值。

+0

在(firstStart)之後錯過了一個正確的父母)< - –

+0

哎呀...很好。添加/編輯 – Nevyn