/// <summary> /// Конструктор главной формы /// </summary> public MainForm() { InitializeComponent(); AutoSizeMode = AutoSizeMode.GrowAndShrink; // Инициализация контейнера для хранения вариантов инвестиций. investments = new Investments(); // Отключение кнопки создания графика. buttonForCreateGrafic.Enabled = false; // Отключение кнопки создания инвестиции. buttonForCreateInvestment.Enabled = false; // Отключение кнопки для подробной информации об инвестиции. buttonInfo.Enabled = false; buttonSave.Enabled = false; buttonSort.Enabled = false; buttonForCreateGrafic.Enabled = false; if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) { MessageBox.Show("Отсутствует или ограничено подключение к сети.\nПроверьте настройки вашего сетевого подключения."); } toolTip = new ToolTip { AutoPopDelay = 3000, InitialDelay = 1000, ReshowDelay = 500, }; AddToolTips(); }
/// <summary> /// Сохраняет данные о созданных вариантах инвестиции /// в текстовый файл. /// </summary> /// <param name="invsForSave"> Список вариантов инвестиции. </param> public void SaveFile(Investments invsForSave) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Текстовый документ (*.txt)|*.txt|Все файлы (*.*)|*.*"; List <string> text = invsForSave.Invs.Select(i => (i.InvestmentName + "\n Валюта: " + i.Currency.ToString() + "; Через " + i.PredictionPeriod + " дн. на счету будет " + Math.Round(i.ProceedsEstimate, 2).ToString() + " Руб.; Процент риска " + Math.Round(i.RiskEstimate, 2) + "%; Доходность инвестиции: " + Math.Round(i.ProfitPercentage, 2) + "%").ToString()).ToList(); if (saveFileDialog.ShowDialog() == DialogResult.OK) { StreamWriter streamWriter = new StreamWriter(saveFileDialog.FileName); foreach (var el in text) { streamWriter.WriteLine(el); } streamWriter.Close(); MessageBox.Show("Сохранение прошло успешно"); } }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="invs"> Список созданных пользователем вариантов инвестиций. </param> public InvestmentCreationForm(Investments invs, CurrencyType currency) { optionsPanel = new Panel { Location = new Point(0, 0), Size = new Size(ClientSize.Width, 250), }; FillOptionsPanel(currency); buttonPanel = new Panel { Location = new Point(0, 250), Size = new Size(ClientSize.Width, 50), }; FillButtonPanel(); Controls.Add(optionsPanel); Controls.Add(buttonPanel); saveButton.Click += (sender, args) => { // Проверка того, все ли поля формы были заполнены. if (!AllFieldsAreFilled()) { MessageBox.Show("Заполните все поля формы"); } // Создание варианта инвестиции. else { // Проверка соответствия ввода маске. // Максимальное допустимое значение - 9999999.99. // При вводе более 2 знаков после запятой значение округляется до 2 знаков. if (amountRegex.IsMatch(amountBox.Text)) { var amount = new decimal(Math.Round(double.Parse(amountBox.Text, CultureInfo.InvariantCulture), 2)); if (amount < 0.01m) { MessageBox.Show("Сумма должна быть ненулевой"); } else { var name = nameBox.Text; var selectedCurrButton = currencyPanel.Controls.OfType <RadioButton>().FirstOrDefault(b => b.Checked); var curr = DetermineCurrency(selectedCurrButton); var selectedTime = timeBox.SelectedItem.ToString(); var period = DeterminePeriod(selectedTime); invs.AddInvestment(name, amount, curr, period); var dialog = MessageBox.Show("Вариант инвестиции сохранен."); if (dialog == DialogResult.OK) { this.DialogResult = DialogResult.OK; Close(); } } } else { MessageBox.Show("Введенная сумма не является числом или превышает допустимую сумму"); } } }; cancelButton.Click += (sender, args) => { this.DialogResult = DialogResult.Cancel; Close(); }; }