我在C#中制作了一个程序,它接收到sms
并向用户显示,并且我对这些数据有问题。DataGridView自动重新排序
例如,如果用户通过id将表格中的id从较高的id到较低的id排序,那么当新的sms
到达时它将位于表格的顶部,新的sms将反正到达表格的底部。
下面是截图
正如你所看到的,编号125下的0而不是被放在桌子上......
是否有任何代码或我应该使用的事件?
还有就是我希望启动事件:
public void readSms()
{
try
{
comm = AppData.getInstance().getComm();
DecodedShortMessage[] messages = comm.ReadMessages(PhoneMessageStatus.All, "SM");
foreach (DecodedShortMessage message in messages)
{
if (AppData.getInstance().mensagens.Count != 0)
{
Message msg = new Message(
AppData.getInstance().messages.Last.Value.getId() + 1,
((SmsDeliverPdu)(message.Data)).OriginatingAddress,
message.Data.UserDataText,
((SmsDeliverPdu)(message.Data)).SCTimestamp.ToDateTime(),
false);
AppData.getInstance().setMensagem(msg);
}
else
{
Message msg = new Message(
0,
((SmsDeliverPdu(message.Data)).OriginatingAddress,
message.Data.UserDataText,
((SmsDeliverPdu)(message.Data)).SCTimestamp.ToDateTime(),
false);
AppData.getInstance().setMensagem(msg);
}
}
// I need to put the event of sorting here in case any message was been added
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
谢谢你一次Edper您的帮助!
有,当我在程序中添加消息:
public void preencherTabela(int lastIndex)
{
LinkedList<Message> messages = AppData.getInstance().getMessagessList();
{
addTable(
messages.ElementAt(i).getId(),
messages.ElementAt(i).getChecked(),
messages.ElementAt(i).getMsg(),
messages.ElementAt(i).getNum(),
messages.ElementAt(i).getDate());
}
}
而且AddTable
方法:
private void addTable(int p, bool p_2, string p_3, string p_4, DateTime dateTime)
{
this.dataGridView1.Invoke(
new MethodInvoker(() =>
{
this.dataGridView1.Rows.Add(p, p_2, p_3, p_4, dateTime);
}));
}
如果你想现在还了点吧,这是一个程序在屏幕上显示信息,例如在迪斯科舞厅,用户从手机发送信息到由模型连接到PC的号码,并且信息将显示在其上,实际上我正在朋友迪斯科中测试它。
再次感谢您的帮助!
编辑:增加了一个可以帮助我修复表格的50声望的奖励。
我该如何激活该事件?我会用一些代码更新我的问题,你可以看到我想要做什么... 再次感谢您的帮助。 –
如果您使用的是Winform,只需在窗体构造函数中添加事件处理函数即可。看到我更新的答案。 – Edper
我做到了,但我猜想事件只发生在用户点击ID列(ID的选项卡)时,对吧?我需要在每次有新消息进入系统时执行该事件,否则它将在开始时进入表的底部,就像我在图像中一样... –