救助大虾关于ListBox内容变更问题

zhoujianzhou 2009-08-20 05:44:42
本人做了一个通过UDP广播发送消息查找局域网内,查找正在使用此程序的用户。
侦听到用户发送来的IP后,将其加入ListBox中。

private void SetText(string text)
{
if (myForm.lstOnline.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
myForm.Invoke(d, new object[] { text });
}
else
{
myClass.title = text; //用户的IP
myClass.value = "0";
if (!myForm.lstOnline.Items.Contains(myClass))
{
myForm.lstOnline.Items.Add(myClass);
//再回发一个广播信息
。。。。
}
}
}



选中listBoxk中的某一项后,双击后执行这句:
string str = lstOnline.SelectedItem.ToString();

列表的IP显示自始至终都是没有问题的,但只要其中的一个用户双击某个IP后,某他人再选择双击其他的IP str的值都是第一个人所选择的那个,请问这是什么原因?知道的说下!谢谢!分不够可以再加!
...全文
88 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyi8808 2009-08-23
  • 打赏
  • 举报
回复
解决了就好。
Harrison_2009 2009-08-23
  • 打赏
  • 举报
回复
是逻辑的问题,信息接收时应该排除自己本身的,再进行添加进去,否则本身的IP可能会占用原本保存在内存中IP的地址,但原本列表中的显示的并不会更改!
redleafe 2009-08-23
  • 打赏
  • 举报
回复
是逻辑的问题吗?
把解决方法给大家共享下。
zhoujianzhou 2009-08-23
  • 打赏
  • 举报
回复
问题,还是自己解决了.
zhoujianzhou 2009-08-21
  • 打赏
  • 举报
回复
双击IP代码如下:

public void lstOnline_MouseDoubleClick(object sender, MouseEventArgs e)
{
string str = lstOnline.SelectedItem.ToString();
if (lstOnline.SelectedIndex == 0)
{
MessageBox.Show("不能和自己聊天!");
return;
}

if (((OverToString)lstOnline.SelectedItem).value == "0")//表示没有打开的!
{
talkForm = new chatForm(str,this);
talkForm.Text = str;
((OverToString)lstOnline.SelectedItem).value = "1";//标记为已打开!
talkForm.Show(this);
}
else
{
...
}

}
zhoujianzhou 2009-08-21
  • 打赏
  • 举报
回复
ding!
风之影子 2009-08-20
  • 打赏
  • 举报
回复
程序的逻辑那块有问题。

把你双击IP的代码贴出来。
zhoujianzhou 2009-08-20
  • 打赏
  • 举报
回复
我继续顶!
zhoujianzhou 2009-08-20
  • 打赏
  • 举报
回复
我再顶!
zhoujianzhou 2009-08-20
  • 打赏
  • 举报
回复
ding!@

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧