//выгружает настройки в файл public static void SaveToFile(WTrayOptions wTrayOptions) { XmlSerializer xmlSer = new XmlSerializer(typeof(WTrayOptions)); //экземпляр xmlSer класса XmlSerializer string fileName = System.Environment.CurrentDirectory + "\\Data\\WtrayOptions.xml"; //имя файла с настройками FileStream fileStream = new FileStream(fileName, FileMode.Create); //поток fileStream для создания XML-файла xmlSer.Serialize(fileStream, wTrayOptions); //сериализация fileStream.Close(); //закрываем поток }
//загружает настройки из файла public static void LoadFromFile(ref WTrayOptions wTrayOptions) { XmlSerializer xmlSer = new XmlSerializer(typeof(WTrayOptions)); //экземпляр xmlSer класса XmlSerializer string fileName = System.Environment.CurrentDirectory + "\\Data\\WTrayOptions.xml"; //имя файла с настройками FileStream fileStream = new FileStream(fileName, FileMode.Open); //поток fileStream для чтения XML-файла wTrayOptions = (WTrayOptions)xmlSer.Deserialize(fileStream); //десериализация fileStream.Close(); //закрываем поток }
private void настройкиToolStripMenuItem_Click(object sender, EventArgs e) { //показать окно с настройками formOptions.ShowDialog(); //если поменялся город, или прокси if ((wTrayOptions.CityOption != formOptions.iCities[formOptions.comboBoxCities.SelectedIndex]) || (wTrayOptions.UseProxy != formOptions.checkBoxProxy.Checked) || (wTrayOptions.Proxy != formOptions.textBoxProxy.Text && formOptions.checkBoxProxy.Checked == true)) { wTrayOptions.CityOption = formOptions.iCities[formOptions.comboBoxCities.SelectedIndex]; //запускаем асинхронную загрузку дабы не забивать основной поток this.webClient.DownloadFileAsync(new Uri("http://informer.gismeteo.ru/xml/" + wTrayOptions.CityOption.ToString() + ".xml"), System.Environment.CurrentDirectory + "\\Weather\\" + wTrayOptions.CityOption.ToString() + ".xml.new"); } //настройки могли поменяться, поэтому переприсваиваем их if (formOptions.radioButton1.Checked == true) { wTrayOptions.ShowOption = 1; } if (formOptions.radioButton2.Checked == true) { wTrayOptions.ShowOption = 2; } if (formOptions.radioButton3.Checked == true) { wTrayOptions.ShowOption = 3; } if (formOptions.radioButton4.Checked == true) { wTrayOptions.UpdateOption = 4; } if (formOptions.radioButton5.Checked == true) { wTrayOptions.UpdateOption = 5; } if (formOptions.radioButton6.Checked == true) { wTrayOptions.UpdateOption = 6; } if (formOptions.radioButton7.Checked == true) { wTrayOptions.UpdateOption = 7; } wTrayOptions.UseProxy = formOptions.checkBoxProxy.Checked; wTrayOptions.Proxy = formOptions.textBoxProxy.Text; try { if (wTrayOptions.UseProxy == true) { this.webClient.Proxy = new WebProxy(wTrayOptions.Proxy); } else { this.webClient.Proxy = null; } } catch (Exception er) { MessageBox.Show("Настройки прокси ошибочны!\n" + er.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } //и применяем их if (wTrayOptions.ShowOption == 1) { txtIcon.Visible = true; picIcon.Visible = false; } if (wTrayOptions.ShowOption == 2) { txtIcon.Visible = false; picIcon.Visible = true; } if (wTrayOptions.ShowOption == 3) { txtIcon.Visible = true; picIcon.Visible = true; } if (wTrayOptions.UpdateOption == 4) { this.timerDownload.Interval = 3 * 60 * 60 * 1000; this.timerDownload.Enabled = true; } if (wTrayOptions.UpdateOption == 5) { this.timerDownload.Interval = 6 * 60 * 60 * 1000; this.timerDownload.Enabled = true; } if (wTrayOptions.UpdateOption == 6) { this.timerDownload.Interval = 12 * 60 * 60 * 1000; this.timerDownload.Enabled = true; } if (wTrayOptions.UpdateOption == 7) { this.timerDownload.Enabled = false; } //и сохраняем WTrayOptions.SaveToFile(this.wTrayOptions); }
public FormMain() { InitializeComponent(); System.Environment.CurrentDirectory = Application.StartupPath; //перо для отрисовки Pen myPen = new Pen(Color.FromArgb(140, 140, 140)); //создаём рисовалку по иконке с картинкой this.picGraphics = Graphics.FromImage(this.picBitmap); //рисуем квадратик, ограничивающий иконку this.picGraphics.DrawRectangle(myPen, 0, 0, 15, 15); //размер текста Size textSize = TextRenderer.MeasureText("?", this.textFont); //отрисовка текста TextRenderer.DrawText(this.picGraphics, "?", this.textFont, new Point((16 - textSize.Width) / 2 + 1, 0), Color.Black); //создаём рисовалку по иконке с текстом this.txtGraphics = Graphics.FromImage(this.txtBitmap); //рисуем квадартик, ограничивающий иконку this.txtGraphics.DrawRectangle(myPen, 0, 0, 15, 15); //размер текста textSize = TextRenderer.MeasureText("t°", this.textFont); //отрисовка текста TextRenderer.DrawText(this.txtGraphics, "t°", this.textFont, new Point((16 - textSize.Width) / 2 + 3, 0), Color.Black); //отрисовываем иконку в трее this.picIcon.Icon = Icon.FromHandle(this.picBitmap.GetHicon()); //отрисовываем иконку в трее this.txtIcon.Icon = Icon.FromHandle(this.txtBitmap.GetHicon()); //загружаем настройки WTrayOptions.LoadFromFile(ref this.wTrayOptions); //прописываем их в форму с настройками formOptions.comboBoxCities.SelectedIndex = formOptions.iCities.IndexOf(wTrayOptions.CityOption); if (wTrayOptions.ShowOption == 1) { formOptions.radioButton1.Checked = true; } if (wTrayOptions.ShowOption == 2) { formOptions.radioButton2.Checked = true; } if (wTrayOptions.ShowOption == 3) { formOptions.radioButton3.Checked = true; } if (wTrayOptions.UpdateOption == 4) { formOptions.radioButton4.Checked = true; } if (wTrayOptions.UpdateOption == 5) { formOptions.radioButton5.Checked = true; } if (wTrayOptions.UpdateOption == 6) { formOptions.radioButton6.Checked = true; } if (wTrayOptions.UpdateOption == 7) { formOptions.radioButton7.Checked = true; } formOptions.checkBoxProxy.Checked = wTrayOptions.UseProxy; formOptions.textBoxProxy.Text = wTrayOptions.Proxy; try { if (wTrayOptions.UseProxy == true) { this.webClient.Proxy = new WebProxy(wTrayOptions.Proxy); } else { this.webClient.Proxy = null; } } catch (Exception e) { MessageBox.Show("Настройки прокси ошибочны!\n" + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } //и применяем их if (wTrayOptions.ShowOption == 1) { txtIcon.Visible = true; picIcon.Visible = false; } if (wTrayOptions.ShowOption == 2) { txtIcon.Visible = false; picIcon.Visible = true; } if (wTrayOptions.ShowOption == 3) { txtIcon.Visible = true; picIcon.Visible = true; } if (wTrayOptions.UpdateOption == 4) { this.timerDownload.Interval = 3 * 60 * 60 * 1000; this.timerDownload.Enabled = true; } if (wTrayOptions.UpdateOption == 5) { this.timerDownload.Interval = 6 * 60 * 60 * 1000; this.timerDownload.Enabled = true; } if (wTrayOptions.UpdateOption == 6) { this.timerDownload.Interval = 12 * 60 * 60 * 1000; this.timerDownload.Enabled = true; } if (wTrayOptions.UpdateOption == 7) { this.timerDownload.Enabled = false; } //вешаем обработчик на завершение загрузки this.webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(this.OnDownloadFileCompleted); //запускаем асинхронную загрузку дабы не забивать основной поток this.webClient.DownloadFileAsync(new Uri("http://informer.gismeteo.ru/xml/" + wTrayOptions.CityOption.ToString() + ".xml"), System.Environment.CurrentDirectory + "\\Weather\\" + wTrayOptions.CityOption.ToString() + ".xml.new"); }