【发布时间】:2011-05-10 20:09:44
【问题描述】:
我想要的是有一个ComboBox,它在SelectedIndexChanged 上会改变一个Timer.Interval。我的代码基本上是这样的:
public Form1()
{
InitializeComponent();
Timer AutoRefresh = new Timer();
AutoRefresh.Tick += new EventHandler(AutoRefresh_Tick);
var RefreshIntervals = new[] { "4 hours", "2 hours", "1 hour", "15 minutes", "10 seconds" };
comboBox1.DataSource = RefreshIntervals;
comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (AutoRefresh.Enabled == true)
AutoRefresh.Enabled = false;
if (comboBox1.SelectedText == "4 hours")
AutoRefresh.Interval = 14400000;
else if (comboBox1.SelectedText == "2 hours")
AutoRefresh.Interval = 7200000;
else if (comboBox1.SelectedText == "1 hour")
AutoRefresh.Interval = 3600000;
else if (comboBox1.SelectedText == "15 minutes")
AutoRefresh.Interval = 900000;
else if (comboBox1.SelectedText == "10 seconds")
AutoRefresh.Interval = 10000;
AutoRefresh.Enabled = true;
}
现在,显然这不起作用,因为 comboBox1_SelectedIndexChanged() 没有对 Timer 变量的引用。
如何修改我的代码以将AutoRefresh 传递给comboBox1_SelectedIndexChanged()?
也许是指出我还是 C# 新手的好时机。请善待。
【问题讨论】:
-
你为什么要这样做?你想达到什么目的?如果您解释,可能会给出一个更好的方法来实现它的答案。
-
@Oded - 好电话。该程序非常简单:刷新后它会查询一个 SQL DB,该数据库填充一个 DataTable 以供显示。我想使用这个组合框和 Timer 在重复发生的计时器上自动刷新 DataTable,并且我希望在用户选择新的时间表(4 小时、2 小时、1 小时、15 分钟)后立即更新 Timer 的间隔。
-
你看过
SqlDependency类吗? -
@Oded - 我没有,但在阅读了 20 秒后,我认为
SqlDependency就像一个 SQL 查询的侦听器并报告更改是否正确? -
差不多 - 更改通过事件发出信号。
标签: c# event-handling parameter-passing