我的表单有几个问题,可以选择一个可接受或不可接受的选项,链接到一个单选按钮。我遇到的问题是,当我检查并再次触发时,我的检查事件正在触发,当我取消选中它时,我不确定如何修改我的代码,以便每个问题答案只触发一次,这是否是正确的方法实现我在做什么,并插入答案为SQL,因为它是半从火灾事件的工作除了两次:单选按钮Check + SQL插入
string answer1 = "Acceptable";
string answer2 = "Not Acceptable";
string n1;
string n2;
string n3;
string n4;
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
SqlConnection conDatabase = new SqlConnection(String.Format(@"Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID={2};Password={3}", SQLSERVER_ID, SQLDatabaseName, SQLServerLoginName, SQLServerPassword));
string query = "INSERT INTO Answers(Option1, Option2, Option3, Option4) VALUES (@Option1, @Option2, @Option3, @Option4";
SqlCommand cmd = new SqlCommand(query, conDatabase);
cmd.CommandType = CommandType.Text;
conDatabase.Open();
cmd.Parameters.Add("@Option1", SqlDbType.NVarChar).Value = n1;
cmd.Parameters.Add("@Option2", SqlDbType.NVarChar).Value = n2;
cmd.Parameters.Add("@Option3", SqlDbType.NVarChar).Value = n3;
cmd.Parameters.Add("@Option4", SqlDbType.NVarChar).Value = n4;
cmd.ExecuteNonQuery();
conDatabase.Close();
}
我的XAML代码是:
<RadioButton x:Name="radio1a" GroupName="Question1" Checked="radioButton1_Checked"/>
<RadioButton x:Name="radio1b" GroupName="Question1" Unchecked="radioButton2_Checked"/>
<RadioButton x:Name="radio2a" GroupName="Question2" Checked="radioButton1_Checked"/>
<RadioButton x:Name="radio2b" GroupName="Question2" Unchecked="radioButton2_Checked"/>
最后我检查,如果点击可接受的单选按钮1,那么'n1'将被设置为应答1(可接受),并且如果点击了不可接受的单选按钮2,则'n1'将被设置为应答2(u可接受) - n1是1号(我的表单上的第一个问题):
private void radioButton1_Checked(object sender, RoutedEventArgs e)
{
Check();
}
private void radioButton2_Checked(object sender, RoutedEventArgs e)
{
Check();
}
public void Check()
{
if (radio1a.IsChecked == true)
{
n1 = answer1;
}
else if (radio1b.IsChecked == true)
{
n1 = answer2;
}
if (radio2a.IsChecked == true)
{
n2 = answer1;
}
else if (radio2b.IsChecked == true)
{
n2 = answer2;
}
.... etc.
}
无法真正得到你想要的。所以每个问题有多个单选按钮有问题?当一个答案被检查,它应该开火?答案切换时是否必须再次启动?应该甚至可以切换答案吗?或者你打算通过按钮或其他方式提交所有答案吗? – C4u 2014-09-29 13:32:00
@ C4ud3x每个问题有2个选项可接受或不可接受。问题1将插入到数据库的第一列,问题2将插入到第二列等。用户将完成他们所有的选择,然后单击将插入到数据库中的提交。我注意到它发射了两次,因为我有一个连接到1a/2a单选按钮的消息框,并且每当我更改为不同的选择时,它们都会出现两次。当我更改我的选择时,事件再次触发,当我检查并取消选中不应该发生的事件时。 – 2014-09-29 13:41:14
如果你检查一个答案,事件被触发两次?顺便说一句:从你的if中删除“== true”。 “IsChecked”已经返回一个布尔值,所以如果(radio.IsChecked)就足够了。对于错误只是为了if(!radio.IsChecked)。 – C4u 2014-09-29 13:54:08