2012-12-14 79 views
0

嗨,大家好,可能是一個簡單的。 使用C#.Net 4.0和Visual Studio 2012 Ultimate。邏輯來檢查多個文本框中的空值

得到了下面的代碼:

string part = ""; 
part = txtIOpart.Text; 
txtBatchCV.Text = txtBatchIO.Text; 
txtPartCV.Text = part; 
txtExternalCV.Text = Sqlrunclass.SplitSpec_External(part, pg); 
txtInternalCV.Text = Sqlrunclass.SplitSpec_Internal(); 
txtABSCV.Text = Sqlrunclass.SplitSpec_cvABS(); 
txtOilCV.Text = Sqlrunclass.SplitSpec_OilSeal(); 

txtBarCV.Text = "*" + Sqlrunclass.SplitInfo_ASno(part, pg) + "*"; 
txtBarNumCV.Text = txtBarCV.Text; 
txtLocnCV.Text = Sqlrunclass.SplitInfo_Location(); 
txtFitsCV.Text = Sqlrunclass.SplitInfo_Desc(); 
txtHeightCV.Text = Sqlrunclass.SplitSpec_Height(); 
txtDiameterCV.Text = Sqlrunclass.SplitSpec_Diameter(); 
txtCirclitCV.Text = Sqlrunclass.SplitSpec_Circlit(); 

picTypeCV.Image = ftpclass.Download("CVspecType" + Sqlrunclass.SplitSpec_TypeCV() + ".jpg", "ftp.shaftec.com/Images/TypeJpg", "0095845|shafteccom0", "4ccc7365d4"); 

if (txtBatchCV.Text == null || txtBatchCV.Text == "") 
{ 
    txtBatchCV.Text = "ALL"; 
} 

正如你可以在我檢查批次底部看,但我需要檢查所有的數據多數民衆贊成由一堆方法來設置。如果它看到一個空或空白的txt,每個人將有不同的txt輸出。無論如何縮短這個代碼?

+0

http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx – ken

+0

'TextBox.Text'是從來沒有空' ',它會返回''「'然後。 –

+1

@PLB:即使那麼屬性返回'String.Empty'。 'txt.Text = null; Console.Write(txt.Text == null);'outputs'「false」'。 –

回答

1

TextBox.Text永遠不會是null,那麼它會返回""。如果你的方法返回null你可以使用null-coalescing operator

string nullRepl = "ALL"; 
txtExternalCV.Text = Sqlrunclass.SplitSpec_External(part, pg) ?? nullRepl; 
txtInternalCV.Text = Sqlrunclass.SplitSpec_Internal() ?? nullRepl; 
txtABSCV.Text = Sqlrunclass.SplitSpec_cvABS() ?? nullRepl; 
txtOilCV.Text = Sqlrunclass.SplitSpec_OilSeal() ?? nullRepl; 
txtLocnCV.Text = Sqlrunclass.SplitInfo_Location() ?? nullRepl; 
txtFitsCV.Text = Sqlrunclass.SplitInfo_Desc() ?? nullRepl; 
txtHeightCV.Text = Sqlrunclass.SplitSpec_Height() ?? nullRepl; 
txtDiameterCV.Text = Sqlrunclass.SplitSpec_Diameter() ?? nullRepl; 
txtCirclitCV.Text = Sqlrunclass.SplitSpec_Circlit() ?? nullRepl; 
+0

多數民衆贊成在相當不錯的運氣之前從未使用過,生病給它一個嘗試隊友謝謝! – lemunk

+0

如果方法返回「」 – lemunk

+0

@StevenSmith:那麼你不能使用'??'-operator。 –

3

嘗試,txtBatchCV.Text例如

//Just for null 
txtBatchCV.Text = (txtBatchCV.Text ?? "ALL").ToString(); 

//for both null and empty string 
txtBatchCV.Text = string.IsNullOrEmpty(txtBatchCV.Text) ? "ALL": txtBatchCV.Text; 
1

對於您可以使用string.IsNullOrEmpty(txtBatchCV.Text)首先,它是一個convevience方法,基本上做了你的,如果檢查做什麼。

1

我會嘗試這樣的事:

void SetDefaultIfNull(TextBox txt, string defaultVal) 
{ 
    if (string.IsNullOrWhitespace(txt.Text)) 
     txt.Text = defaultVal; 
} 

然後通過每個文本框,默認的方法。

+0

'default'是一個關鍵字。這不會編譯。 ;) – Leri

+0

哦拍,你說得對。我會馬上編輯。 –

1

可以ATLEAST使用下列方法之一:

string.IsNullOrEmpty(txtBatchCV.Text)

string.IsNullOrWhitespace(txtBatchCV.Text)

3

你可以通過所有的文本框

foreach (var txt in form.Controls.OfType<TextBox>()) 
{ 
    switch(txt.Id){ 
     case "txtBatchCV": 
     // Do whatever you want for txtBatchCV e.g. check string.IsNullOrEmpy(txt.Text) 
     break; 
    } 
} 
迭代

我藉以上從這裏:

How do I loop through all textboxes and make them run corresponding actions from action dictionary?

在回答我得到了Tim的評論,我更增添了幾分代碼解釋你能做些什麼。我的代碼示例從未打算成爲一個完整的解決方案。

+0

會更改所有文本框文本。 –