我在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的選項卡)時,對吧?我需要在每次有新消息進入系統時執行該事件,否則它將在開始時進入表的底部,就像我在圖像中一樣... –