C #: Как определить, какое значение текстового поля равно или ближе всего к нулю из группы текстовых полей / значений? - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть отличная формула превосходства, которую я использовал, но я хочу распространить что-то более существенное и долговечное, а также удобное для пользователя для моей группы дизайнеров на работе. К сожалению, я также имею дело с отрицательными числами, поэтому переход к минимальному значению не сработает.

Таким образом, если textbox1 сказал 13, textbox2 сказал 4, а textbox3 сказал -1, текстовое поле 3 загорелось или любое выбранное мною действие было выполнено, поскольку -1 ближе всего к нулю.

Не то, чтобы это действительно помогало, но формула Excel выглядит следующим образом: = INDEX (A61: A78, MATCH (MIN (INDEX (ABS (A61: A78), 0,1)), INDEX (ABS (A61: A78) ), 0,1), 0))

Спасибо за любую помощь!

Ответы [ 3 ]

3 голосов
/ 02 сентября 2010

Вот метод "веселья с 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);
2 голосов
/ 02 сентября 2010

Выполните итерацию по текстовым полям, вычислите абсолютное значение каждого числа в каждом поле и отслеживайте наименьшее увиденное число, а также индекс текстового поля, в котором оно было видно. Попробуйте найти абсолютное значение Math.Abs()значение.

1 голос
/ 02 сентября 2010

Вы можете просто перебирать текстовые поля, сохраняя найденное минимальное значение и соответствующее текстовое поле на ходу.

...