将数据从一个按钮单击事件传递到另一个按钮单击事件

时间:2013-11-28 07:17:10

标签: c# event-handling buttonclick

以下是我的代码。我希望在两次不同的按钮点击时捕获两个时间戳之间的差异,即我希望在btnEndTime_click事件中使用btnStartTime_click事件的“startTime”。

    protected void btnStartTime_Click(object sender, EventArgs e)
    {
        var startTime = DateTime.Now;            
        lblStartTime.Text = startTime.ToString("HH:mm:ss tt");            
    }

    protected void btnEndTime_Click(object sender, EventArgs e)
    {            
        var workDuration = DateTime.Now.Subtract(startTime).TotalMinutes;
        lblEndTime.Text = ("The Work duration is "+workDuration);

    }

2 个答案:

答案 0 :(得分:4)

只需将startTime置于本地范围之外:

DateTime startTime;
protected void btnStartTime_Click(object sender, EventArgs e)
{
    startTime = DateTime.Now;            
    lblStartTime.Text = startTime.ToString("HH:mm:ss tt");            
}

protected void btnEndTime_Click(object sender, EventArgs e)
{            
    var workDuration = DateTime.Now.Subtract(startTime).TotalMinutes;
    lblEndTime.Text = ("The Work duration is "+workDuration);

}

答案 1 :(得分:3)

由于这涉及到Web应用程序,因此必须以startTime的方式存储ViewState,以便稍后可以恢复它。

以下是使用private const string StartTimeViewstateKey = "StartTimeViewstateKey"; protected void btnStartTime_Click(object sender, EventArgs e) { var startTime = DateTime.Now; ViewState[StartTimeViewstateKey] = startTime.ToString(CultureInfo.InvariantCulture); } protected void btnEndTime_Click(object sender, EventArgs e) { var startTime = DateTime.Parse((string)ViewState[StartTimeViewstateKey], CultureInfo.InvariantCulture); var workDuration = DateTime.Now.Subtract(startTime).TotalMinutes; lblEndTime.Text = ("The Work duration is " + workDuration); }

的快速示例
private const string StartTimeSessionKey= "StartTimeSessionKey";
protected void btnStartTime_Click(object sender, EventArgs e)
{
    var startTime = DateTime.Now;
    Session[StartTimeSessionKey] = startTime;
}
protected void btnEndTime_Click(object sender, EventArgs e)
{
    var startTime = (DateTime)Session[StartTimeSessionKey];

    var workDuration = DateTime.Now.Subtract(startTime).TotalMinutes;
    lblEndTime.Text = ("The Work duration is " + workDuration);
}

或者你可以使用会话状态:

{{1}}