当我有一些约束时,如何保存数据并显示它

时间:2011-04-29 13:00:52

标签: c# data-binding data-structures datagridview

很难指定标题......

我突然想知道这个问题,

我的数据包包含“数据”“时间”和“id”。

我需要将它保存在某些数据结构中,并在表单上以某种方式显示数据(可能是datagridview), 但是当我点击显示的数据时,我需要能够获取其余的数据包信息(时间和ID)。

例如:

0110 1110 0101 0001

第一个数据id是9,时间是2222.当我点击第一个数据(0110)时,我需要显示(比如表格上的标签)id = 9和time = 2222。

还有一件事,数据必须像上面示例中的方式一样显示(在数据之间有空格的行中。

修改 我忘记了重要的事情。 如果我使用数据绑定,可以选择将网格上的数据位置(基于某些数据包信息)从某个单元格/行更改为另一个单元格/行?如果没有,可能数据绑定在这里不好。

2 个答案:

答案 0 :(得分:0)

如果我理解你要做什么,使用DataGridView,试试这个:

// DataGridView

Databing the data source to the DataGridView (use a list of your packet for that)

---------------------------------
| DATA 1 | DATA 2 | DATA 3 | ... (Header)
---------------------------------
|  0110  |  1110  |  0101  | ... (Data)
---------------------------------

向DataGridView CellContentClick添加事件处理程序,如下所示:

private void myDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex > -1 && e.ColumnIndex > -1) // A row and cell was selected
    {
        var packet = myDataGrid.Rows[e.RowIndex].DataBoundItem as Packet;
        if (packet != null)
        {
            // Display packet information
        }
    }
}

希望它有所帮助。

答案 1 :(得分:0)

使您的数据包成为一个类,其中data,time和id是私有成员,DisplayData是公共属性。要从外部访问私有成员的内容,请使用具有[Browsable(false)]属性的属性:

public class Packet
{
    private int data, time, id;

    public string DisplayData {get {return FunctionToFormatDataToMyNeeds(data); }}
    // ...

    [Browsable(false)]
    public int Time{get{return time;}}
}

将这些对象的列表绑定到DataGridView的数据源。