- PR -

DataGridの編集

1
投稿者投稿内容
PYON
会議室デビュー日: 2005/01/27
投稿数: 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

スキルアップ/キャリアアップ(JOB@IT)