Ich mache ein Programm in C#, die sms
empfangen und dem Benutzer anzeigen, und ich habe ein Problem mit der Art der Daten.DataGridView automatisch neu sortieren
Zum Beispiel, wenn der Benutzer die Tabelle nach IDs sortiert, von der höheren ID zur niedrigeren, so wenn eine neue sms
ankommt, wird es auf der Oberseite der Tabelle, die neue SMS wird trotzdem an den unteren Rand der Tabelle . Hier
ist ein Screenshot
Wie Sie sehen können, die ID 125 unter 0 ist statt auf der Spitze der Tabelle zu sein ...
Gibt es einen Code oder Ereignis, das ich verwenden sollte?
Es ist, wo ich dieses Ereignis beginnen soll:
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);
}
}
Vielen Dank nochmals Edper für Ihre Hilfe!
Es ist, wenn ich die Nachricht im Programm hinzufügen:
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());
}
}
Und die AddTable
Methode:
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);
}));
}
Wenn Sie auch der Punkt, der es jetzt wollen, ist dies ein Programm für Zeigen Nachrichten auf einem Bildschirm, zum Beispiel in einer Disko, senden die Benutzer Nachrichten vom Handy an eine Nummer, die durch ein Modell mit einem PC verbunden ist, und die Nachrichten werden darauf angezeigt, tatsächlich teste ich es in einer Freundesdisco.
Nochmals vielen Dank für die Hilfe!
Edit: Hinzugefügt ein Kopfgeld von 50 Ruf für wer kann mir helfen, den Tisch zu reparieren.
Und wie kann ich dieses Ereignis aktivieren? Ich werde meine Frage mit etwas Code aktualisieren, damit Sie sehen können, was ich versuche zu tun ... Und noch einmal, danke für Ihre Hilfe. –
Wenn Sie Winform verwenden, fügen Sie einfach den Ereignishandler in Ihrem Formularkonstruktor hinzu. Siehe meine aktualisierte Antwort. – Edper
Ich habe es getan, aber ich denke, dass das Ereignis nur auftritt, wenn der Benutzer auf die ID-Spalte (die Registerkarte der IDs) klicken, richtig? Ich brauche, dass das Ereignis jedes Mal ausgeführt wird, dass eine neue Nachricht in das System kommt, sonst wird es in der Unterseite der Tabelle in Schritt be am Anfang sein, wie ich in dem Bild habe ... –