저는 C#에서 sms
을 받고 사용자에게 표시되는 프로그램을 만들고 있는데 데이터 정렬에 문제가 있습니다.DataGridView 자동 다시 정렬
예를 들어 사용자가 ID를 기준으로 테이블을 정렬하는 경우 상위 ID에서 하위 ID로 새로운 sms
이 도착하면 테이블 상단에 새로운 SMS가 표시됩니다. . 여기
당신이 볼 수 있듯이, ID (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 가지의 명성을 추가했습니다. 당신의 DataGridView에 바인드되어있는 경우
어떻게 그 이벤트를 활성화 할 수 있습니까? 나는 당신이 할 일을 볼 수있는 몇 가지 코드로 내 질문을 업데이 트됩니다 ... 그리고 한번 더, 당신의 도움에 감사드립니다. –
Winform을 사용하는 경우 Form 생성자에 이벤트 처리기를 추가하기 만하면됩니다. 내 업데이트 답변을 참조하십시오. – Edper
나는 그것을했는데, 사용자가 ID 열 (ID 탭)을 클릭했을 때만 발생하는 것 같아요. 맞습니까? 새로운 메시지가 시스템에 도착할 때마다 이벤트가 실행되도록해야합니다. 이미지에있는 것처럼 처음부터 단계적으로 테이블 하단에 나타납니다. –