public HostEditer(List<Group> groups, Host host) { Host = host; InitializeComponent(); this.Icon = Me.Amon.Hosts.Properties.Resources.Icon; int idx = 0; string key = host == null ? "" : host.Group; Group group; for (int i = 0; i < groups.Count; i += 1) { group = groups[i]; CbGroup.Items.Add(group); if (key == group.Key) { idx = i; } } if (host != null) { CbGroup.SelectedIndex = idx; TbIp.Text = host.IP; TbDomain.Text = host.Domain; TbMemo.Text = host.Comment; CbEnabled.Checked = host.Enabled; } }
private void DoReload(Group group) { if (!File.Exists(_HostsFile)) { return; } StreamReader reader = File.OpenText(_HostsFile); if (reader == null) { return; } string line; int row = -1; bool inCmt = true; while (true) { line = reader.ReadLine(); if (line == null) { break; } row += 1; // 空行 if (string.IsNullOrWhiteSpace(line)) { inCmt = false; continue; } // 方案 if (row == 0 && Solution.IsMatch(line)) { if (_Solution.FromString(line)) { string key = _Solution.Text; bool def = string.IsNullOrWhiteSpace(key) || !_SolutionMItems.ContainsKey(key); MiSlnDef.Visible = def; TiSlnDef.Visible = def; if (_SelectedSlnMItem != null) { _SelectedSlnMItem.Checked = false; } if (_SelectedSlnTItem != null) { _SelectedSlnTItem.Checked = false; } if (def) { _SelectedSlnMItem = MiSlnDef; _SelectedSlnTItem = TiSlnDef; } else { _SelectedSlnMItem = _SolutionMItems[key]; _SelectedSlnTItem = _SolutionTItems[key]; } _SelectedSlnMItem.Checked = true; _SelectedSlnTItem.Checked = true; } continue; } // 分组 if (Group.IsMatch(line)) { var g = new Group(); if (g.FromString(line)) { AppendGroup(g); group = g; } continue; } // 注释 if (inCmt && Regex.IsMatch(line, "^#[^.]*")) { if (inCmt) { _Comment += Environment.NewLine; _Comment += line.Substring(1); continue; } } // 配置 if (Host.IsMatch(line)) { var h = new Host(); if (h.FromString(line)) { h.Group = group.Key; var item = new ListViewItem(); item.Text = h.IP; item.Tag = h; item.Group = LvItem.Groups[h.Group]; item.Checked = h.Enabled; var sub = new ListViewItem.ListViewSubItem(); sub.Text = h.Domain; item.SubItems.Add(sub); sub = new ListViewItem.ListViewSubItem(); sub.Text = h.Comment; item.SubItems.Add(sub); LvItem.Items.Add(item); } continue; } inCmt = false; } reader.Close(); }
private void CreateItem(Host host) { string group = CheckGroup(host.Group); ListViewItem item = new ListViewItem(); item.Checked = host.Enabled; item.Group = LvItem.Groups[group]; item.Text = host.IP; item.Tag = host; var sub = new ListViewItem.ListViewSubItem(); sub.Text = host.Domain; item.SubItems.Add(sub); sub = new ListViewItem.ListViewSubItem(); sub.Text = host.Comment; item.SubItems.Add(sub); LvItem.Items.Add(item); item.Selected = true; _SelectedHost = item; }
private void UpdateItemEnabled(ListViewItem item, Host host) { if (host.Enabled) { item.BackColor = _EnabledBackColor; item.ForeColor = host.Modified ? _ChangedColor : _EnabledForeColor; } else { item.BackColor = _DisabledBackColor; item.ForeColor = host.Modified ? _ChangedColor : _DisabledForeColor; } }
private void UpdateItem(ListViewItem item, Host host) { string group = CheckGroup(host.Group); item.Group = LvItem.Groups[group]; item.Text = host.IP; item.SubItems[1].Text = host.Domain; item.SubItems[2].Text = host.Comment; item.ForeColor = host.Modified ? _ChangedColor : _DefaultColor; }
private void BtOk_Click(object sender, EventArgs e) { var group = CbGroup.Text; if (string.IsNullOrWhiteSpace(group)) { MessageBox.Show("请输入或选择分组信息!"); CbGroup.Focus(); return; } string ip = TbIp.Text.Trim(); if (string.IsNullOrWhiteSpace(ip)) { MessageBox.Show("请输入一个有效的IP地址!"); TbIp.Focus(); return; } if (Regex.IsMatch(ip, "^\\d{1,3}([.]\\d{1,3}){3}$")) { if (!IsIPv4(ip)) { MessageBox.Show("请输入一个有效的IPv4地址!"); TbIp.Focus(); return; } } else if (Regex.IsMatch(ip, "^(:[0-9a-zA-Z]{0,2})+$")) { if (!IsIPv6(ip)) { MessageBox.Show("请输入一个有效的IPv6地址!"); TbIp.Focus(); return; } } else { MessageBox.Show("请输入一个有效的IP地址!"); TbIp.Focus(); return; } string domain = TbDomain.Text.Trim(); if (!Regex.IsMatch(domain, "^[0-9a-zA-Z]+([.][0-9a-zA-Z-]+)*$")) { MessageBox.Show("请输入一个有效的域名!"); TbDomain.Focus(); return; } if (Host == null) { Host = new Host(); } Host.Group = group == "<默认>" ? "" : group; Host.IP = ip; Host.Domain = domain; Host.Comment = TbMemo.Text; Host.Enabled = CbEnabled.Checked; DialogResult = System.Windows.Forms.DialogResult.OK; Close(); }