#c# #.net #winforms
#c# #.net #приложения WinForms #winforms
Вопрос:
в настоящее время у меня есть форма с несколькими флажками, как только все флажки установлены или оставлены пустыми, она отправляет в базу данных состояние флажков, которые я хочу добавить, если флажок не установлен, при его установке должно появиться окно подтверждения «вы уверены, что хотите это проверить», пожалуйста, любая помощь?
это текущий код
public IMeditor(IMui IMui, IMuser U, string User)
{
InitializeComponent();
this.IMui = IMui;
imu = U;
if (imu.UID == 0)
{
Add.Text = "Add";
imu.name = user;
}
else
Add.Text = "Update";
AuthChat.Checked = imu.AuthChat == 1;
AuthTac1.Checked = imu.AuthTac1 == 1;
AuthTac2.Checked = imu.AuthTac2 == 1;
AuthTac3.Checked = imu.AuthTac3 == 1;
AuthTac4.Checked = imu.AuthTac4 == 1;
AuthTac5.Checked = imu.AuthTac5 == 1;
AuthTac6.Checked = imu.AuthTac6 == 1;
AuthTac7.Checked = imu.AuthTac7 == 1;
AuthTac8.Checked = imu.AuthTac8 == 1;
AuthTac9.Checked = imu.AuthTac9 == 1;
AuthTac10.Checked = imu.AuthTac10 == 1;
switch (imu.Transport.ToLower()) {
case "aim": Transport.SelectedIndex = 0; break;
case "gtalk": Transport.SelectedIndex = 1; break;
case "msn": Transport.SelectedIndex = 2; break;
case "yahoo": Transport.SelectedIndex = 3; break;
}
}
Комментарии:
1. Вы уверены, что хотите так сильно беспокоить своих пользователей? Обычно нажатие на флажок просто ставит галочку или снимает флажок — именно то, что запрашивал пользователь.
2. @sarnold это не форма, которую заполняет пользователь, это форма, в которой я хочу предупредить пользователя о том, что он установил флажок (только в нескольких), который обычно не должен быть установлен (только для администраторов)
Ответ №1:
Я согласен с Иззи. Добавьте что-то вроде
private void PrivateInitialize()
{
CheckBox chkBox = new CheckBox();
chkBox.Text = "Click me";
chkBox.CheckedChanged = new EventHandler(chkBox_CheckedChanged);
}
private void chkBox_CheckedChanged(object sender, EventArgs e)
{
MessageBox.Show("Nag, nag, nag! You take out the trash yet?");
}
Ответ №2:
Вам необходимо обработать событие CheckedChangedEvent для флажка. Вы можете найти пример кода на MSDN. Также
эта ссылка для полного понимания флажка.
Или же вы можете создать свой собственный класс из элемента управления CheckBox в Windows forms, затем переопределить требуемую функцию и реализовать свою собственную логику и создать все флажки в вашем приложении из этого производного класса
Комментарии:
1. извините, я ребенок новичка, поэтому мне нужна дополнительная помощь в том, как это сделать, может быть, кто-нибудь сможет отредактировать мой код, который я использую? или расскажите мне шаг за шагом, что я должен делать
Ответ №3:
public IMeditor(IMui IMui, IMuser U, string User)
{
InitializeComponent();
this.IMui = IMui;
imu = U;
if (imu.UID == 0)
{
Add.Text = "Add";
imu.name = user;
}
else
Add.Text = "Update";
AuthChat.Checked = imu.AuthChat == 1;
AuthTac1.Checked = imu.AuthTac1 == 1;
AuthTac2.Checked = imu.AuthTac2 == 1;
AuthTac3.Checked = imu.AuthTac3 == 1;
AuthTac4.Checked = imu.AuthTac4 == 1;
AuthTac5.Checked = imu.AuthTac5 == 1;
AuthTac6.Checked = imu.AuthTac6 == 1;
AuthTac7.Checked = imu.AuthTac7 == 1;
AuthTac8.Checked = imu.AuthTac8 == 1;
AuthTac9.Checked = imu.AuthTac9 == 1;
AuthTac10.Checked = imu.AuthTac10 == 1;
switch (imu.Transport.ToLower()) {
case "aim": Transport.SelectedIndex = 0; break;
case "gtalk": Transport.SelectedIndex = 1; break;
case "msn": Transport.SelectedIndex = 2; break;
case "yahoo": Transport.SelectedIndex = 3; break;
}
AuthChat.Click = new EventHandler(ClickHandler);
}
void ClickHandler(Object obj, EventArgs args)
{
if (obj == AuthChat amp;amp; AuthChat.CheckState == CheckState.Checked)
{
DialogResult result = MessageBox.Show("Do you want to change?", "are you sure?", MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
AuthChat.Checked = false;
}
}
}
Ответ №4:
public IMeditor(IMui IMui, IMuser U, string User)
{
InitializeComponent();
this.IMui = IMui;
imu = U;
if (imu.UID == 0)
{
Add.Text = "Add";
imu.name = user;
}
else
Add.Text = "Update";
AuthChat.Checked = imu.AuthChat == 1;
AuthTac1.Checked = imu.AuthTac1 == 1;
AuthTac2.Checked = imu.AuthTac2 == 1;
AuthTac3.Checked = imu.AuthTac3 == 1;
AuthTac4.Checked = imu.AuthTac4 == 1;
AuthTac5.Checked = imu.AuthTac5 == 1;
AuthTac6.Checked = imu.AuthTac6 == 1;
AuthTac7.Checked = imu.AuthTac7 == 1;
AuthTac8.Checked = imu.AuthTac8 == 1;
AuthTac9.Checked = imu.AuthTac9 == 1;
AuthTac10.Checked = imu.AuthTac10 == 1;
switch (imu.Transport.ToLower()) {
case "aim": Transport.SelectedIndex = 0; break;
case "gtalk": Transport.SelectedIndex = 1; break;
case "msn": Transport.SelectedIndex = 2; break;
case "yahoo": Transport.SelectedIndex = 3; break;
}
AuthChat.CheckedChanged = new EventHandler(CheckChangedHandler);
AuthChat1.CheckedChanged = new EventHandler(CheckChangedHandler);
}
void CheckChangedHandler(Object obj, EventArgs args)
{
if (obj == AuthChat)
{
MessageBox.Show("Checked changed for AuthChat");
}
else if (obj == AuthChat1)
{
MessageBox.Show("Checked changed for AuthChat1");
}
}
Комментарии:
1. теперь это предупреждает меня, что, если бы я предпочел, чтобы это было поле «Да» или «Нет»? итак, он спрашивает вас, уверены ли вы, что хотите установить этот флажок, и это только при его установке .. если отменить проверку, то мне не нужно окно сообщения
2. Я опубликовал новый ответ. Надеюсь, это поможет вам.
Ответ №5:
сделать это с помощью javascript? добавить OnClientClick=»вернуть confirmCheck(this);»
<script language="javascript">
function confirmCheck(e){
return confirm("are you sure?");
// do other stuff
}
</script>
это должно быть лучше, чем перенаправление людей
Комментарии:
1. Это приложение winforms. При чем здесь javascript?