2010-09-02 51 views
0

我有一個偉大的excel公式,我一直在使用,但我想分發一些更實質和耐用的東西,也對我的工作組設計師用戶友好。我也在處理負數,不幸的是,以最小值運行是行不通的。C#:如何檢測哪個文本框值等於或最接近零的一組文本框/值?

所以如果textbox1說13,textbox2說4,textbox3說-1,文本框3會點亮或者我選擇的任何動作都會被執行,因爲-1是最接近零的。 (A61:A78,MATCH(MIN(INDEX(ABS(A61:A78),0,1)),INDEX(ABS(A61:A78: A78),0,1),0))

感謝您的幫助!

回答

3

這裏是一個「有趣的LINQ」方法

Func<string, bool> isDecimal = s => { decimal temp; return decimal.TryParse(s, out temp);}; 
TextBox closestToZero = 
    (from tb in this.Controls.OfType<TextBox>() 
     where isDecimal(tb.Text) 
     orderby Math.Abs(decimal.Parse(tb.Text)) 
     select tb) 
     .FirstOrDefault(); 

if (closestToZero != null) 
    MessageBox.Show(closestToZero.Text); 
+1

+1 for LINQ :) – hydrogen 2010-09-02 00:54:07

+0

謝謝大家,我真的很感謝這裏的社區。 – saintj 2010-09-02 01:03:09

1

您可以簡單地遍歷文本框,存儲到目前爲止發現的最小值及其相關文本框。

+0

謝謝你提醒我,我只是說這個編輯: 我也處理負數由最小值是行不通不幸的是那麼回事。 – saintj 2010-09-02 00:38:44

+0

所以,按最小*絕對*值。基本技術仍然有效。 – mjfgates 2010-09-02 00:43:16

+0

謝謝,我會谷歌這個!非常感激! – saintj 2010-09-02 00:49:13

2

迭代文本框,計算每個框中每個數字的絕對值,並跟蹤所看到的最小數字以及所看到文本框的索引。嘗試查看Math.Abs()以獲取絕對值。

相關問題