C# 检查列表框中的一项是否单击了两次?

C# 检查列表框中的一项是否单击了两次?,c#,asp.net,listbox,click,C#,Asp.net,Listbox,Click,是否可以检查asp列表框中的一个项目是否被多次单击?我正在使用onSelectedIndexChanged事件…但我需要查看同一项是否被多次单击。是否存在此类事件?如果您使用的是SelectedIndexChanged上的,这意味着您的列表框将在用户每次单击某个选项时发回。如果要跟踪用户是否多次单击同一选项,可以保留以前单击的项目列表,并将其存储在ViewState中 只要存储的数据很小且可序列化,就可以了 因此,要保持用户单击的值的运行列表,类似这样的操作应该有效 public List<

是否可以检查asp列表框中的一个项目是否被多次单击?我正在使用onSelectedIndexChanged事件…但我需要查看同一项是否被多次单击。是否存在此类事件?

如果您使用的是SelectedIndexChanged上的
,这意味着您的列表框将在用户每次单击某个选项时发回。如果要跟踪用户是否多次单击同一选项,可以保留以前单击的项目列表,并将其存储在ViewState中

只要存储的数据很小且可序列化,就可以了

因此,要保持用户单击的值的运行列表,类似这样的操作应该有效

public List<string> previouslyClickedOptions {
    get {
       if (ViewState["prevClicked"] == null)
           ViewState["prevClicked"] = new List<string>();
       return (List<string>)ViewState["prevClicked"];
    }
}

和Adam的答案一样,但还夹杂着SessionState

public List<int> previouslyClickedOptions{
    get {
       if (Session["prevClicked"] == null)
           Session["prevClicked"] = new List<int>();
       return (List<int>)Session["prevClicked"];
    }
}
public List previously单击选项{
得到{
如果(会话[“prevClicked”]==null)
会话[“prevClicked”]=新列表();
返回(列表)会话[“prevClicked”];
}
}

adam关于自动将更改发回是一个选项的看法是正确的。如果这是你已经在做的事情,那么做这种跟踪是有意义的。但是,该属性实际上被称为AutoPostBack,而不是onSelectedIndexChanged,当有一个post指示控件的值与最初提供控件时不同时,您可以处理该事件

不过,您可能不希望每次单击控件时都发回。这是浏览器和服务器之间的大量来回通信。我建议,如果你想计算点击次数,最好在客户端使用javascript,并在脚本中更新表单中隐藏的输入,当表单出于合法原因发布时,使用发布的次数,而不是让表单以不必要的方式发布


这将节省您的带宽和服务器负载,感觉这是一种更好的方法。

我更喜欢使用javascript或jquery进行此检查。毕竟,这只是一个警告。

每次有人单击列表框中的两个不同项目时,它都会将它们从列表框中删除,并将它们显示在单独的列表框中,可以说是将它们“配对”在一起。我不需要使用回发吗?我也会使用脚本。在客户机上添加和删除列表控件并不复杂。
public List<int> previouslyClickedOptions{
    get {
       if (Session["prevClicked"] == null)
           Session["prevClicked"] = new List<int>();
       return (List<int>)Session["prevClicked"];
    }
}