我只是被这个封锁了,到处搜索但是有一个难以找到的
在我正在VS Express 2012中开发的windowsform C#应用程序中,我正在努力实现以下目标:
我有一个纯文本的IP主机名关系列表,如下所示:
99999 10.10.10.10
88888 10.10.10.11
等
共计1567行
在表格中我有两个文本框,一个带有自动完成功能(项目列表只是主机名),第二个应该显示输入主机名的IP,一旦用户从自动完成功能中选择主机名
很抱歉,但是我坚持这个,请帮忙 提前致谢
答案 0 :(得分:1)
class ips
{
public int ident;
public string ip;
public ips(int Ident, string Ip)
{
this.ident = Ident;
this.ip = Ip;
}
}
//fill the List
const int MAXELEMENTS = 512;
ips[] ipList = new ips[MAXELEMENTS];
ips ipa = new ips(1111, "10.10.10.1");
ips ipb = new ips(2222, "20.20.20.1");
然后激活SelectionChangeCommitted事件?
public Form1()
{
ipList[0] = ipa;
ipList[1] = ipb;
InitializeComponent();
cBox1.AutoCompleteMode = AutoCompleteMode.Append;
for(int i = 0; i < ipList.Count(); i++)
{
if(ipList[i] != null)
cBox1.Items.Add(ipList[i].ip);
}
}
private void cBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
tBox1.Text = Convert.ToString(ipList[cBox1.SelectedIndex].ident);
}
我希望这能帮到你
答案 1 :(得分:1)
是的,我们将举例:
99999 10.10.10.10
88888 10.10.10.11
并将其解析为字典,如下所示:
private Dictionary<string, string> ParseText(string text)
{
Dictionary<string, string> hostnameDictionary= new Dictionary<string, string>();
foreach(var line in text.Trim().Split(Environment.NewLine)))
{
string[] textParts = line.Trim().Split(' ');
if(textParts.Length == 2 && !hostnameDictionary.ContainsKey(textParts[0])
{
hostnameDictionary.Add(textParts[0], textParts[1]);
}
}
return hostnameDictionary;
}
请注意,仅当其他地方没有空格时,上述内容才会起作用,因此如果主机名中有空格,则上述内容不会解析它。
使用上面的方法,您将获得一个使用主机名作为键的字典,因此您可以非常轻松地找到ip属于哪个字典,因此例如键入hostnameDictionary["99999"]
将返回字符串{{1 }}
如果不清楚,或者您需要其他部分的帮助,请告诉我,我会更新答案。