通过复选框时,我发现有写的
CheckBox checkbox = (CheckBox)sender
on checkBox1_CheckedChanged
event。
请解释一下它的含义?
答案 0 :(得分:12)
该行只会将sender
投射到CheckBox
。
为什么?
CheckedChanged
事件的事件处理程序签名是:
CheckChanged(object sender, EventArgs e)
因此,如果您想使用任何sender
特定功能,则需要将CheckBox
投回CheckBox
- object
没有太多可以使用的功能......
这样checkbox
变量可用于获取复选框ID并对复选框进行操作。
答案 1 :(得分:5)
这是一个例子。在Gridview或Repeater中我们想要选择所有选项。如你所见 在你的邮箱上。如果你单击一个复选框就会选择.Code会更好地解释你。
protected void ChkAll_CheckedChanged(object sender, EventArgs e)
{
foreach (RepeaterItem rowItem in this.rptFriendsRecord.Items)
{
CheckBox chk = (CheckBox)rowItem.FindControl("cbFriend");
chk.Checked = ((CheckBox)sender).Checked;
}
}
我希望它有效。
答案 2 :(得分:3)
我假设方法定义是这样的:
void checkBox1_CheckedChanged(object sender,EventArgs e){
CheckBox checkbox = (CheckBox)sender;
//....
}
基本上他们在这里做的是将sender
变量(仅被声明为通用对象)转换为(更加“有用”)CheckBox
变量。
通常这样做是因为您必须强制转换才能访问CheckBox的“特定”属性。
例如
sender.Checked=true;
不起作用。你必须这样做:
((CheckBox)sender).Checked=true;
当然非常难看,所以声明一个新的CheckBox变量要容易得多,然后就可以了。
checkbox.Checked=true;
没有施法。
答案 3 :(得分:1)
sender
参数(声明为普通Object
)会转换为CheckBox
,因为您显然知道该事件的发件人始终是CheckBox。
答案 4 :(得分:1)
正如Oded所说,由于事件处理程序签名,您需要强制转换。
你可以在事件处理程序中使用checkBox1
而不是类型转换,但是在处理sender
时,您可以将CheckChanged
逻辑重用于其他控制也是如此 - 尽管在这种情况下,它应该被重构为以下内容:
private void MyFancyCheckChanged(CheckBox sender, EventArgs e)
{
// do stuff
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
MyFancyCheckChanged((CheckBox) sender, e);
}
答案 5 :(得分:0)
CheckBox类表示用户可以选择和清除的复选框。本主题向您介绍Windows Presentation Foundation(WPF)中的CheckBox控件,并介绍如何使用可扩展应用程序标记语言(XAML)和C#创建CheckBox元素,在C#中设置事件处理程序,创建包含丰富内容(如图像)的CheckBox控件,并使用样式来改变控件的外观。 在这里,我为您提供了样品。
<asp:CheckBox ID="CheckBox1" runat="server" Text="www.google.com"
OnCheckedChanged="CheckBox1_CheckedChanged" />
<asp:CheckBox ID="CheckBox2" runat="server" Text="www.yahoo.com" />
Code Behind代码是
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox1.Checked)
Response.Redirect("www.google.com");
else
Response.Redirect("www.yahoo.com");
}