- - PR -
DataGridの編集
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-28 00:54
初投稿の.NET初心者です。宜しくお願いします。
PocketPC2003用アプリをVB.NETで開発しており、シリアル通信部分はOpenNET.CF を使用しています。DataGridにセット⇒通信コマンド送信⇒受信したら受信イベント発生 ⇒結果をDataGridに格納、となっています。受信イベント発生前ならDataGrid内の 行削除、RowFilterなど可能ですが、受信イベント内で行を削除したり、RowFilterを かけようとすると画面がフリーズし、エラーを出さずに処理が止まってしまいます。 受信結果によって処理が変わるため、受信イベント内でDataGridを更新するか、 イベント内での受信結果を受けてからbtn_writeに処理を戻すことができれば良いのですが。 こことWindowsCEFANの過去ログも一通り見ましたが解決策がわかりません。 Private ds As New DataSet("IC") Private wdt As DataTable = ds.Tables.Add("WRITE") Private WithEvents wdv As DataView Private Sub btn_write_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_write.Click Dim sr As New System.IO.StreamReader(FileName) While sr.Peek() > -1 line = sr.ReadLine.Split(comma.ToCharArray) wdt.Rows.Add(New [Object]() {line(0), line(2)}) End While wdv = New DataView(ds.Tables("WRITE")) DataGrid1.DataSource = wdv Dim Output As Byte() Output = Encoding.ASCII.GetBytes(ここに送信コマンド) Port.Output = Output End Sub Public Sub Port_DataReceived() Handles Port.DataReceived Buffer = Port.Input res = Encoding.ASCII.GetString(Buffer, 0, Buffer.Length) Loop Until Port.InBufferCount = 0 'ここを実行すると止まる rdt.Rows.RemoveAt(DataGrid1.CurrentCell.RowNumber) End Sub 削除の代わりにフラグ用のカラムを追加し、受信したらフラグがたった分だけ RowFilterという方法も考えましたが、結局 cm As CurrencyManager = DataGrid1.BindingContext(wdv) wdv.RowFilter = "FLAG = '0'" で止まってしまいます。どなたか助けて頂けないでしょうか。 [ メッセージ編集済み 編集者: PYON 編集日時 2005-01-28 00:56 ] |
1