diff --git a/Netch/Forms/MainForm.cs b/Netch/Forms/MainForm.cs
index c80cdb37..558571e2 100644
--- a/Netch/Forms/MainForm.cs
+++ b/Netch/Forms/MainForm.cs
@@ -1,4 +1,4 @@
-using Netch.Controllers;
+using Netch.Controllers;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -791,6 +791,26 @@ namespace Netch.Forms
// UsedBandwidthLabel.Visible = UploadSpeedLabel.Visible = DownloadSpeedLabel.Visible = true;
// MainController.pNFController.OnBandwidthUpdated += OnBandwidthUpdated;
+ // 如果勾选启动后最小化
+ if (Global.Settings.MinimizeWhenStarted)
+ {
+ WindowState = FormWindowState.Minimized;
+ NotifyIcon.Visible = true;
+
+ if (IsFirstOpened)
+ {
+ // 显示提示语
+ NotifyIcon.ShowBalloonTip(5,
+ UpdateChecker.Name,
+ Utils.i18N.Translate("Netch is now minimized to the notification bar, double click this icon to restore."),
+ ToolTipIcon.Info);
+
+ IsFirstOpened = false;
+ }
+
+ Hide();
+ }
+
ControlButton.Enabled = true;
ControlButton.Text = Utils.i18N.Translate("Stop");
diff --git a/Netch/Forms/SettingForm.Designer.cs b/Netch/Forms/SettingForm.Designer.cs
index 7fe2621e..a72ef5ec 100644
--- a/Netch/Forms/SettingForm.Designer.cs
+++ b/Netch/Forms/SettingForm.Designer.cs
@@ -50,6 +50,7 @@
this.ControlButton = new System.Windows.Forms.Button();
this.GlobalBypassIPsButton = new System.Windows.Forms.Button();
this.BehaviorGroupBox = new System.Windows.Forms.GroupBox();
+ this.MinimizeWhenStartedCheckBox = new System.Windows.Forms.CheckBox();
this.ProfileCount_Label = new System.Windows.Forms.Label();
this.ProfileCount_TextBox = new System.Windows.Forms.TextBox();
this.CheckUpdateWhenOpenedCheckBox = new System.Windows.Forms.CheckBox();
@@ -239,7 +240,7 @@
// ControlButton
//
this.ControlButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.ControlButton.Location = new System.Drawing.Point(357, 514);
+ this.ControlButton.Location = new System.Drawing.Point(357, 549);
this.ControlButton.Name = "ControlButton";
this.ControlButton.Size = new System.Drawing.Size(75, 23);
this.ControlButton.TabIndex = 11;
@@ -250,7 +251,7 @@
// GlobalBypassIPsButton
//
this.GlobalBypassIPsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.GlobalBypassIPsButton.Location = new System.Drawing.Point(12, 514);
+ this.GlobalBypassIPsButton.Location = new System.Drawing.Point(12, 549);
this.GlobalBypassIPsButton.Name = "GlobalBypassIPsButton";
this.GlobalBypassIPsButton.Size = new System.Drawing.Size(128, 23);
this.GlobalBypassIPsButton.TabIndex = 10;
@@ -260,6 +261,7 @@
//
// BehaviorGroupBox
//
+ this.BehaviorGroupBox.Controls.Add(this.MinimizeWhenStartedCheckBox);
this.BehaviorGroupBox.Controls.Add(this.ProfileCount_Label);
this.BehaviorGroupBox.Controls.Add(this.ProfileCount_TextBox);
this.BehaviorGroupBox.Controls.Add(this.CheckUpdateWhenOpenedCheckBox);
@@ -268,15 +270,25 @@
this.BehaviorGroupBox.Controls.Add(this.ExitWhenClosedCheckBox);
this.BehaviorGroupBox.Location = new System.Drawing.Point(12, 330);
this.BehaviorGroupBox.Name = "BehaviorGroupBox";
- this.BehaviorGroupBox.Size = new System.Drawing.Size(420, 178);
+ this.BehaviorGroupBox.Size = new System.Drawing.Size(420, 213);
this.BehaviorGroupBox.TabIndex = 8;
this.BehaviorGroupBox.TabStop = false;
this.BehaviorGroupBox.Text = "Behavior";
//
+ // MinimizeWhenStartedCheckBox
+ //
+ this.MinimizeWhenStartedCheckBox.AutoSize = true;
+ this.MinimizeWhenStartedCheckBox.Location = new System.Drawing.Point(120, 103);
+ this.MinimizeWhenStartedCheckBox.Name = "MinimizeWhenStartedCheckBox";
+ this.MinimizeWhenStartedCheckBox.Size = new System.Drawing.Size(158, 21);
+ this.MinimizeWhenStartedCheckBox.TabIndex = 10;
+ this.MinimizeWhenStartedCheckBox.Text = "Minimize when started";
+ this.MinimizeWhenStartedCheckBox.UseVisualStyleBackColor = true;
+ //
// ProfileCount_Label
//
this.ProfileCount_Label.AutoSize = true;
- this.ProfileCount_Label.Location = new System.Drawing.Point(9, 133);
+ this.ProfileCount_Label.Location = new System.Drawing.Point(9, 185);
this.ProfileCount_Label.Name = "ProfileCount_Label";
this.ProfileCount_Label.Size = new System.Drawing.Size(79, 17);
this.ProfileCount_Label.TabIndex = 8;
@@ -284,7 +296,7 @@
//
// ProfileCount_TextBox
//
- this.ProfileCount_TextBox.Location = new System.Drawing.Point(222, 130);
+ this.ProfileCount_TextBox.Location = new System.Drawing.Point(222, 182);
this.ProfileCount_TextBox.Name = "ProfileCount_TextBox";
this.ProfileCount_TextBox.Size = new System.Drawing.Size(192, 23);
this.ProfileCount_TextBox.TabIndex = 9;
@@ -293,7 +305,7 @@
// CheckUpdateWhenOpenedCheckBox
//
this.CheckUpdateWhenOpenedCheckBox.AutoSize = true;
- this.CheckUpdateWhenOpenedCheckBox.Location = new System.Drawing.Point(120, 103);
+ this.CheckUpdateWhenOpenedCheckBox.Location = new System.Drawing.Point(120, 130);
this.CheckUpdateWhenOpenedCheckBox.Name = "CheckUpdateWhenOpenedCheckBox";
this.CheckUpdateWhenOpenedCheckBox.Size = new System.Drawing.Size(190, 21);
this.CheckUpdateWhenOpenedCheckBox.TabIndex = 8;
@@ -338,7 +350,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.ClientSize = new System.Drawing.Size(444, 548);
+ this.ClientSize = new System.Drawing.Size(444, 583);
this.Controls.Add(this.BehaviorGroupBox);
this.Controls.Add(this.PortGroupBox);
this.Controls.Add(this.GlobalBypassIPsButton);
@@ -393,5 +405,6 @@
private System.Windows.Forms.CheckBox CheckUpdateWhenOpenedCheckBox;
private System.Windows.Forms.Label ProfileCount_Label;
private System.Windows.Forms.TextBox ProfileCount_TextBox;
+ private System.Windows.Forms.CheckBox MinimizeWhenStartedCheckBox;
}
}
\ No newline at end of file
diff --git a/Netch/Forms/SettingForm.cs b/Netch/Forms/SettingForm.cs
index 9e3af674..59408626 100644
--- a/Netch/Forms/SettingForm.cs
+++ b/Netch/Forms/SettingForm.cs
@@ -57,6 +57,7 @@ namespace Netch.Forms
StopWhenExitedCheckBox.Checked = Global.Settings.StopWhenExited;
StartWhenOpenedCheckBox.Checked = Global.Settings.StartWhenOpened;
CheckUpdateWhenOpenedCheckBox.Checked = Global.Settings.CheckUpdateWhenOpened;
+ MinimizeWhenStartedCheckBox.Checked = Global.Settings.MinimizeWhenStarted;
Socks5PortTextBox.Text = Global.Settings.Socks5LocalPort.ToString();
HTTPPortTextBox.Text = Global.Settings.HTTPLocalPort.ToString();
@@ -72,6 +73,7 @@ namespace Netch.Forms
ExitWhenClosedCheckBox.Text = Utils.i18N.Translate(ExitWhenClosedCheckBox.Text);
StopWhenExitedCheckBox.Text = Utils.i18N.Translate(StopWhenExitedCheckBox.Text);
StartWhenOpenedCheckBox.Text = Utils.i18N.Translate(StartWhenOpenedCheckBox.Text);
+ MinimizeWhenStartedCheckBox.Text = Utils.i18N.Translate(MinimizeWhenStartedCheckBox.Text);
CheckUpdateWhenOpenedCheckBox.Text = Utils.i18N.Translate(CheckUpdateWhenOpenedCheckBox.Text);
ProfileCount_Label.Text = Utils.i18N.Translate(ProfileCount_Label.Text);
@@ -133,6 +135,7 @@ namespace Netch.Forms
Global.Settings.StopWhenExited = StopWhenExitedCheckBox.Checked;
Global.Settings.StartWhenOpened = StartWhenOpenedCheckBox.Checked;
Global.Settings.CheckUpdateWhenOpened = CheckUpdateWhenOpenedCheckBox.Checked;
+ Global.Settings.MinimizeWhenStarted = MinimizeWhenStartedCheckBox.Checked;
try
{
diff --git a/Netch/Models/Setting.cs b/Netch/Models/Setting.cs
index 39585a3c..cd74666b 100644
--- a/Netch/Models/Setting.cs
+++ b/Netch/Models/Setting.cs
@@ -63,6 +63,11 @@ namespace Netch.Models
///
public bool StartWhenOpened = false;
+ ///
+ /// 是否启动后自动最小化
+ ///
+ public bool MinimizeWhenStarted = false;
+
///
/// 是否打开软件时检查更新
///
diff --git a/Netch/Resources/zh-CN b/Netch/Resources/zh-CN
index ae44eca3..d5e27f32 100644
--- a/Netch/Resources/zh-CN
+++ b/Netch/Resources/zh-CN
@@ -119,6 +119,7 @@
"Settings": "设置",
"Start when opened": "打开软件时启动加速",
+ "Minimize when started": "启动加速后隐藏",
"Local Port": "本地端口",
"Allow other Devices to connect": "允许其他设备连入",
"Netmask": "子网掩码",