winformでリアルタイムデータとどう関連付けるか
Winformでリアルタイムデータバインディングを行う手順は以下のとおりです。
- データソースを作成します。コレクション (リスト、データテーブルなど) または INotifyPropertyChanged インターフェイスを実装したクラスを使用できます。
- Winformアプリケーションにおいて、DataGridViewやListBox等のコントロールを作成し、そのDataSourceプロパティを設定することでデータソースを設定する。
- データソースのデータが変化した際に、コントロールのデータ表示を適宜更新します。データソースのイベント(List の CollectionChanged イベントなど)または INotifyPropertyChanged インターフェイスの PropertyChanged イベントを利用して実現可能です。
以下に、Winformでリアルタイムデータをバインドする方法のサンプルコードを示します。
using System.ComponentModel;
using System.Windows.Forms;
namespace WinformRealtimeDataBinding
{
public partial class MainForm : Form
{
private BindingList<string> dataSource; // 数据源
public MainForm()
{
InitializeComponent();
dataSource = new BindingList<string>();
dataSource.AllowNew = true;
dataSource.AllowRemove = true;
// 将数据源绑定到控件的DataSource属性
dataGridView.DataSource = dataSource;
}
private void AddButton_Click(object sender, EventArgs e)
{
// 在数据源中添加新数据
dataSource.Add("New Data");
}
private void RemoveButton_Click(object sender, EventArgs e)
{
// 从数据源中移除数据
if (dataGridView.SelectedRows.Count > 0)
{
var rowIndex = dataGridView.SelectedRows[0].Index;
dataSource.RemoveAt(rowIndex);
}
}
}
}
上の例では、BindingList をデータソースとして作成し、DataGridView コントロールの DataSource プロパティにバインドしています。すると、「追加」ボタンをクリックするとデータソースに新しいデータが追加され、「削除」ボタンをクリックして一行のデータを選択すると、対応するデータがデータソースから削除されます。この結果、データソースのデータが変更されると、DataGridView コントロールの表示が自動的に更新されます。