Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-将数据添加到列表<;类别>;内部列表<;类别>;_C#_List_Listbox_Touch_Mouseevent - Fatal编程技术网

C#-将数据添加到列表<;类别>;内部列表<;类别>;

C#-将数据添加到列表<;类别>;内部列表<;类别>;,c#,list,listbox,touch,mouseevent,C#,List,Listbox,Touch,Mouseevent,我的程序使用全局钩子来捕获和记录鼠标点击。按下开始按钮,开始记录这些点击以及记录日期和时间。当按下停止按钮时,也会记录停止时间和日期 下面显示了我的列表,我在其中捕获了所需的数据。我遇到的问题是获得列表接触点来填充鼠标点击和时间。(鼠标点击和接触点可能会让人困惑,但我希望最终能在触摸屏上实现这一点) 简而言之,我有一个记录列表,每个记录都有自己的嵌套单击列表。我的最终目标是在列表框中显示这些内容,然而,我对这一点还不熟悉,目前在实现这一点上遇到了一些困难。非常感谢建设性的批评。我想说,您只需要两

我的程序使用全局钩子来捕获和记录鼠标点击。按下开始按钮,开始记录这些点击以及记录日期和时间。当按下停止按钮时,也会记录停止时间和日期

下面显示了我的
列表
,我在其中捕获了所需的数据。我遇到的问题是获得
列表接触点
来填充鼠标点击和时间。(鼠标点击和接触点可能会让人困惑,但我希望最终能在触摸屏上实现这一点)


简而言之,我有一个记录列表,每个记录都有自己的嵌套单击列表。我的最终目标是在
列表框
中显示这些内容,然而,我对这一点还不熟悉,目前在实现这一点上遇到了一些困难。非常感谢建设性的批评。

我想说,您只需要两个列表框。一个是外部列表,第二个是外部列表中所选项目的列表。顺便说一句,不要将“+”与字符串一起使用。使用string.Format方法。这样做效率很低。谢谢你的回复,你知道为什么字符串中的recData.touchPoints会返回null吗?填充嵌套的TouchData列表时似乎出现问题。它在哪里为空?我看不到您在任何地方分配属性接触点。为什么不使用日期时间类型作为日期数据?为什么在属性中使用字段名“\u something”?属性通常是Pascal样式的名称。这意味着int属性{get;set;}嗨,接触点位于RecordingData类的最顶端。DateTime已用于日期类型。以u开头的属性存在,因此我不会与表单中指定的变量以及RecordingData和TouchData中指定的变量混淆,谢谢。
public class RecordingData
{
    public string _recStartDate { get; set; }
    public string _startRecTime { get; set; }
    public string _recStopDate { get; set; }
    public string _stopRecTime { get; set; }
    public List<TouchData> touchPoints { get; set; }

    public override string ToString()
    {
        return "Recording: " + 
            _recStartDate + " " 
            + _startRecTime + " - " 
            + _recStopDate + " " 
            + _stopRecTime;
    }
} 

public class TouchData
{
    public int _touchX { get; set; }
    public int _touchY { get; set; }
    public string _xyTouchTime { get; set; }

    public override string ToString()
    {
        return "x: " +  _touchX + " y: " + 
            _touchY + " Time: " + _xyTouchTime;
    }
}
List<RecordingData> recordingData = new List<RecordingData>();
List<TouchData> touchData = new List<TouchData>();

private void OnMouseDown(object sender, MouseEventArgs e)
    {
        xyTouchTime = DateTime.Now.ToString("HH:mm:ss tt");

        Log(string.Format("X: {0} \t Y: {1} \t Date: {2} \t Time: {3} \n {4}", 
            e.X.ToString(), 
            e.Y.ToString(), 
            DateTime.Now.ToString("dd/MM/yyyy"),
            xyTouchTime,
            Environment.NewLine));

        touchX = e.X;
        touchY = e.Y;

        // add these values to our touch List<>
        touchData.Add(new TouchData
            {
                _touchX = touchX,
                _touchY = touchY,
                _xyTouchTime = xyTouchTime
            });
    }

private void Stop_Click(object sender, EventArgs e)
    {
        recStopDate = DateTime.Now.ToString("dd/MM/yy");
        recStopTime = DateTime.Now.ToString("HH:mm:ss tt");
        Unsubscribe();
        Show();
        this.WindowState = FormWindowState.Normal;
        this.ShowInTaskbar = true;
        notifyIcon.Visible = false;

        //  populate List<T> with our data
        recordingData.Add(new RecordingData
        {
            _recStartDate = recStartDate, 
            _startRecTime = recStartTime,
            _recStopDate = recStopDate,
            _stopRecTime = recStopTime
        });

        //  update our listbox
        BindData();
    }

    void BindData()
    {
        listBox1.DataSource = null;
        listBox1.DataSource = recordingData;
        listBox1.SelectedIndex = 0;
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        int index = listBox1.SelectedIndex;

        if (listBox1.SelectedItem == null)
        {
            return;
        }
        else
        {
            RecordingData recData = (RecordingData)listBox1.SelectedItem;

            textBoxDebug.Text = "Start Date: " + recData._recStartDate + Environment.NewLine
            + "Stop Date: " + recData._recStopDate + Environment.NewLine
            + "Start Time " + recData._startRecTime + Environment.NewLine
            + "Stop Time " + recData._stopRecTime + Environment.NewLine
            + String.Join(Environment.NewLine, recData.touchPoints + Environment.NewLine);
        }
    }