实施例
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked) {
checkBox2.Checked = false;
checkBox2.Click -= checkBox2_CheckedChanged;
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
label1.Text = "2";
}
那么代码的作用是当你检查checkBox1时它会执行其他代码。 我想对trackBar做同样的事情,所以当我按下checkBox1时,它会激活trackBar1中的代码来改变一些值。
目前,我所做的只是将其设置为100(这是我设置的最大值),它确实改变了滑块位置,但代码中没有任何内容运行。
简而言之,我想将代码分配给一个复选框,使其好像我点击并更改了轨道栏的值。
答案 0 :(得分:1)
您需要确保在Value
更改TrackBar
时收听正确的事件。
在public Form1()
{
// Snip
trackBar1.ValueChanged += trackbar1_ValueChanged;
}
private void trackbar1_ValueChanged(object sender, EventArgs e)
{
textBox1.Text = trackBar1.Value.ToString();
}
的初始化代码中,您需要具备以下内容:
TrackBar
这将为TextBox
触发ValueChanged事件时设置一个侦听器,该事件将使用新值更新TrackBar.Value
。
然后,您的复选框事件处理程序只需要确保它在触发时设置ValueChanged
属性,TrackBar
事件将触发private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (trackBar1.Value == 10)
{
trackBar1.Value = 5;
}
else
{
trackBar1.Value = 10;
}
}
,如下所示:
TrackBar
如果TextBox
的值为10,则单击该复选框,它会将值更新为5并更新TrackBar
以读取5.如果在值不为10时单击该值,以上情况发生在10处。
如果您手动更改用户界面中的TextBox
滑块,则会在您滑动时更新Scroll
的值。
由于您使用的是Scroll
事件,因此您应该在MSDN查看该事件的文档。
来自文档:
当鼠标或键盘操作移动滚动框时发生。
这意味着Value
事件仅在鼠标或键盘触发时触发。由于您是以编程方式在后面的代码中设置Scroll
,因此ValueChanged
事件永远不会触发。
问题就变成了,为什么{{1}}有效?我们再次转到MSDN的文档。
当轨道栏的Value属性发生更改时发生 滚动框的移动或代码中的操作。
由于您希望以编程方式更改它,因此这是您要收听的事件处理程序,因为它专门调用了您要完成的案例。