private bool UsedWithAnotherItem(int row) { ItemShortcut itemShortcut = itemShortcuts.Find(i => i.Shortcut.Key == currentKey.Key && i.Shortcut.AccelMods == currentKey.AccelMods); if (itemShortcut != null && itemShortcut != itemShortcuts [row] && currentKey.Key > 0) { string title = Translator.GetString("Warning!"); string translation = Translator.GetString("The selected shortcut is already used for the \"{0}\" quick item. " + "Do you want to remove the shortcut for \"{0}\" and assign it to \"{1}\"?"); string message = string.Format(translation, itemShortcut.ItemName, itemShortcuts [row].ItemName); if (Message.ShowDialog(title, string.Empty, message, "Icons.Question32.png", MessageButtons.YesNo) != ResponseType.Yes) { return(false); } itemShortcut.Shortcut = AccelKey.Zero; } return(true); }
/// <summary> /// 条件查找实体类 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="gridView">DataGridView</param> /// <param name="match">Predicate</param> /// <returns>没有查到返回NULL</returns> public static T Find <T>(this DataGridView gridView, Predicate <T> match) where T : class { BindList <T> _source = gridView.ToBindList <T>(); if (_source != null) { return(_source.Find(match)); } return(null); }
/// <summary> /// 判断某列等于某个值是否存在 /// </summary> /// <param name="gridView">DataGridView</param> /// <param name="columnName">列名称</param> /// <param name="key">列值</param> /// <returns>存在返回True;不存在返回FASLE</returns> public static bool Exist <T>(this DataGridView gridView, string columnName, Object key) { bool _result = false; BindList <T> _source = gridView.ToBindList <T>(); if (_source != null) { int _index = _source.Find(-1, columnName, key); _result = _index > 0; } return(_result); }
private void AddMoney(double amount, int quantity, bool refreshGrid = true) { MoneyContainer mc = list.Find(m => m.Amount.IsEqualTo(amount)); if (mc != null) { mc.Quantity += quantity; } else { list.Add(new MoneyContainer(amount, quantity)); } if (refreshGrid) { RefreshGrid(); } }
/// <summary> /// 根据字段名称以及值查找对应的实体类 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="gridView">DataGridView</param> /// <param name="columnName">列名称</param> /// <param name="key">列值</param> /// <returns>没有查到返回NULL</returns> public static T Find <T>(this DataGridView gridView, string columnName, object key) where T : class { if (!string.IsNullOrEmpty(columnName)) { BindList <T> _source = gridView.ToBindList <T>(); if (_source != null) { int _index = _source.Find(-1, columnName, key); if (_index != -1) { return(_source[_index]); } } } return(null); }
protected void btnOK_Clicked(object o, EventArgs args) { if (!Validate()) { return; } // Mark payments in the operation for deletion foreach (Payment payment in operation.Payments .Where(payment => payment.Mode == PaymentMode.Paid && !payments.Any(p => p.Id >= 0 && p.Id == payment.Id))) { payment.Quantity = 0; } // Add the new payments foreach (Payment payment in payments) { if (payment.OperationType == (int)OperationType.AdvancePayment) { double remainder = payment.Quantity; foreach (var id in usedAdvances[payment]) { long id1 = id; Payment advance = advances.Find(p => p.Id == id1); double sum = Math.Min(remainder, advance.Quantity); advance.Quantity -= sum; // Make sure credit card transactions made for advances are not annulled if (advance.Quantity.IsZero()) { advance.TransactionNumber = null; } remainder -= sum; if (remainder.IsZero()) { break; } } // mark as new payment.Id = -1; payment.OperationType = (int)operation.OperationType; } // Add the payment to the operation if new if (payment.Id < 0) { operation.Payments.Add((Payment)payment.Clone()); continue; } // Replace the payment if already used in the operation Payment currentPayment = payment; Payment existingPayment = operation.Payments.Find(p => p.Id == currentPayment.Id); if (existingPayment != null) { operation.Payments [operation.Payments.IndexOf(existingPayment)] = (Payment)payment.Clone(); } } double subtractedChange = 0d; if (chkChangeIsReturned.Active) { subtractedChange = TotalReceived - Total; } if (subtractedChange > 0) { foreach (Payment payment in operation.Payments) { if (payment.Mode != PaymentMode.Paid) { continue; } if (payment.Type.BaseType != BasePaymentType.Cash) { continue; } double newQtty = Math.Max(0, payment.Quantity - subtractedChange); subtractedChange -= payment.Quantity - newQtty; payment.Quantity = newQtty; if (subtractedChange <= 0) { break; } } } if (subtractedChange > 0) { foreach (Payment payment in operation.Payments) { if (payment.Mode != PaymentMode.Paid) { continue; } if (payment.Type.BaseType == BasePaymentType.Cash) { continue; } double newQtty = Math.Max(0, payment.Quantity - subtractedChange); subtractedChange -= payment.Quantity - newQtty; payment.Quantity = newQtty; if (subtractedChange <= 0) { break; } } } DateTime endDate = BusinessDomain.GetDateValue(txtDueDate.Text.Trim()); if (operation.Debt != null) { operation.Debt.EndDate = endDate; } foreach (Payment payment in operation.Payments) { payment.EndDate = endDate; if (!BusinessDomain.OnPaymentProcessed(payment)) { paymentWidget.Received = 0; paymentWidget.FocusReceived(); return; } } BusinessDomain.AppConfiguration.LastPaymentMethod = (BasePaymentType)paymentWidget.GetPaymentTypeId(); dlgEditNewPayment.Respond(ResponseType.Ok); }