我在 Silverlight 的子窗口中使用复选框。
当用户单击复选框时,它会向数据库发送一个切换功能,如果选中复选框,则值 = 1,未选中值 = -1,因此切换正在更改这些值。
通过使用以下代码 -
private int checkCounter1 = 0;
private void checkBox1_Checked(object sender, RoutedEventArgs e)
{
if (checkCounter1 == 0)
{
}
else
{
//Web Service toggle function
}
checkCounter1 = 1;
}
private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
{
if (checkCounter1 == 0)
{
}
else
{
//Web Service toggle function
}
checkCounter1 = 1;
}
当用户单击复选框时,这将按预期调用 web 服务,并且值正在切换。
我的问题是,当加载子窗口时,由于某种原因,这会在checkBox1_Checked
. 我不知道为什么。因此,通过添加checkCounter
我希望这会跳过页面加载时的切换功能。
在页面加载时,我目前正在使用另一个 Web 服务调用来调用复选框的值,例如,如果数据库中的值为 = 1,则应在表单上选中复选框 -
void Settings_Loaded(object sender, RoutedEventArgs e)
{
cosainWebService.Service1SoapClient();
client.callFlagsCompleted += new EventHandler<callFlagsCompletedEventArgs>(client_callFlagsCompleted);
client.callFlagsAsync();
}
所以我然后取 callFlags 的结果并在这里使用它-
void client_callFlagsCompleted(object sender, callFlagsCompletedEventArgs e)
{
string flag = System.Convert.ToString(e.Result);
foreach (string x in e.Result)
{
string[] array = x.Split(',');
if (array[1] == "Checkbox Name" )
{
if (array[0] == "1") //this is the value in the database
{
checkBox1.IsChecked = true;
}
else
{
}
}
}
}
XAML 复选框看起来像 -
<CheckBox Content="CheckBox Name" Height="16" HorizontalAlignment="Left" Margin="12,42,0,0" Name="checkBox1" VerticalAlignment="Top" Checked="checkBox1_Checked" Unchecked="checkBox1_Unchecked"/>
因此,在调试时,单击复选框将切换数据库中的值,因此当用户选中该框时,该值应存储为“1”,然后我应该能够关闭窗口,再次加载它,然后应该勾选该框,但由于某种原因这不起作用,并且当窗口打开时,它正在切换值。我哪里错了?