none
множественные действия RRS feed

  • Вопрос

  •  private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    string path = "";
    
                    if (checkBox1.Checked)
                        MessageBox.Show("checkBox1", "Инфо", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    else if (checkBox2.Checked)
                        MessageBox.Show("checkBox12", "Инфо", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    else if (checkBox1.Checked)
                    {
                        MessageBox.Show("checkBox13", "Инфо", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    }
                    else throw new Exception("Не выбрано место для сохранения архива!");
    
                    MessageBox.Show("Данные успешно сохранены", "Инфо", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                catch (Exception ex) { MessageBox.Show("Ошибка при попытки сохранения архива, попробуйте еще раз! " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            }

    вот пример кода хочу сделать, что бы при нажатии на кнопку Применить выполнились if действия, использую checkBox-ы ну или можно  radioButton без разницы главное что бы работало.

    какой нибудь простой вариант.

    4 августа 2013 г. 16:59

Ответы

  • ну в коде что вы показали вы пропустили фигурные скобки поэтому и показывается ошибка, должно быть так

    if (radioButton1.Checked)
    {
    AddSite newform = new AddSite();
    newform.WindowState = FormWindowState.Minimized;
    newform.Show();
    }
    else if (radioButton2.Checked)
    MessageBox.Show(...)
    else throw new Exception(....)

    • Помечено в качестве ответа motokraft 5 августа 2013 г. 13:30
    5 августа 2013 г. 10:48

Все ответы

  • Можно использовать RadioButton и в коде использовать switch

    <RadioButton GroupName="numgrp" Tag="1" Checked="CheckedEvent">1</RadioButton>
    <RadioButton GroupName="numgrp" Tag="2" Checked="CheckedEvent">2</RadioButton>
    <RadioButton GroupName="numgrp" Tag="3" Checked="CheckedEvent">3</RadioButton>
    <RadioButton GroupName="numgrp" Tag="4" Checked="CheckedEvent">4</RadioButton>

    void WriteText2(object sender, RoutedEventArgs e)
    {
        RadioButton li = (sender as RadioButton);
        switch (li.Tag.ToString)
    				{
    case "1":
    // Действия в случает выбора 1 Radiobutton
    break;
    case "2":
    // Действия в случает выбора 2 Radiobutton
    break;
    case "3":
    // Действия в случает выбора 3 Radiobutton
    break;
    case "4":
    // Действия в случает выбора 4 Radiobutton
    break;
    						
    				}
    }


    5 августа 2013 г. 5:10
  • я конечно фанат этого но у меня ошибок больше чем слов

    5 августа 2013 г. 7:13
  • первый код который я привел это XAML разметка для создания 4 Radiobutton обьедененных в 1 группу (переключающихся вместе) второй код это обработчик переключения для них который обрабатывает каждый раз когда пользователь переключает radioButton

    5 августа 2013 г. 7:25
  • Может я чего то не понял, а XAML разметка работает в C#
    5 августа 2013 г. 7:31
  • XAML разметка это WPF, для формы

    • Изменено Brash_O 5 августа 2013 г. 7:35
    5 августа 2013 г. 7:34
  • плохо у меня WinForm
    5 августа 2013 г. 7:37
  • все работает точно так же и для WinForm

    это пример кода для WinForms в методе InitializeComponent (добовляется 2 radiobutton)

    второй код получает тот radiobutton который был выбран и дальше все также как я в начале писал

    this.groupBox1 = new System.Windows.Forms.GroupBox();
    			this.radioButton1 = new System.Windows.Forms.RadioButton();
    			this.radioButton2 = new System.Windows.Forms.RadioButton();
    this.groupBox1.Controls.Add(this.radioButton2);
    			this.groupBox1.Controls.Add(this.radioButton1);
    			this.groupBox1.Location = new System.Drawing.Point(12, 12);
    			this.groupBox1.Name = "groupBox1";
    			this.groupBox1.Size = new System.Drawing.Size(200, 100);
    			this.groupBox1.TabIndex = 3;
    			this.groupBox1.TabStop = false;
    			this.groupBox1.Text = "groupBox1";
    			// 
    			// radioButton1
    			// 
    			this.radioButton1.AutoSize = true;
    			this.radioButton1.Location = new System.Drawing.Point(23, 20);
    			this.radioButton1.Name = "radioButton1";
    			this.radioButton1.Size = new System.Drawing.Size(85, 17);
    			this.radioButton1.TabIndex = 0;
    			this.radioButton1.TabStop = true;
    			this.radioButton1.Text = "radioButton1";
    			this.radioButton1.UseVisualStyleBackColor = true;
    			// 
    			// radioButton2
    			// 
    			this.radioButton2.AutoSize = true;
    			this.radioButton2.Location = new System.Drawing.Point(23, 44);
    			this.radioButton2.Name = "radioButton2";
    			this.radioButton2.Size = new System.Drawing.Size(85, 17);
    			this.radioButton2.TabIndex = 1;
    			this.radioButton2.TabStop = true;
    			this.radioButton2.Text = "radioButton2";
    			this.radioButton2.UseVisualStyleBackColor = true;
    private void button1_Click(object sender, EventArgs e)
            {
               RadioButton li = Controls.OfType<RadioButton>().Where(p=>p.Checked).FirstOrDefault();
    switch (li.Tag.ToString())
    				{
    case "1":
    // Действия в случает выбора 1 Radiobutton
    break;
    case "2":
    // Действия в случает выбора 2 Radiobutton
    break;
    case "3":
    // Действия в случает выбора 3 Radiobutton
    break;
    case "4":
    // Действия в случает выбора 4 Radiobutton
    break;
    						
    				}
    }



    5 августа 2013 г. 7:47
  • яко бы все правильно сделал но выдает ошибку 

    5 августа 2013 г. 8:12
  • Добавьте проверку на null, видимо не выбран ни один из RadioButton
    5 августа 2013 г. 8:25
  • у меня не получается помогите мне
    5 августа 2013 г. 8:40
  • Покажите код который у вас получился, и код функции InitializeComponent
    5 августа 2013 г. 8:50
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;
    using System.Diagnostics;
    
    namespace SiteRuNeta
    {
        public partial class Settings : Form
        {
            public Settings()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                RadioButton li = Controls.OfType<RadioButton>().Where(p => p.Checked).FirstOrDefault();
                switch (li.Tag.ToString())
                {
                    case "1":
                        MessageBox.Show("Вы Заполнили не все поля.", "Ошибочка!!!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        break;
                    case "2":
                        // Действия в случает выбора 2 Radiobutton
                        break;
                    case "3":
                        // Действия в случает выбора 3 Radiobutton
                        break;
                    case "4":
                        // Действия в случает выбора 4 Radiobutton
                        break;
    
                }
               
            }
            }
    
        }
    

    5 августа 2013 г. 8:53
  • Покажите еще код функции InitializeComponent

    5 августа 2013 г. 9:25
  • ну кажется вот этот

    private void InitializeComponent()
            {
                System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Settings));
                this.panel1 = new System.Windows.Forms.Panel();
                this.button1 = new System.Windows.Forms.Button();
                this.groupBox1 = new System.Windows.Forms.GroupBox();
                this.radioButton2 = new System.Windows.Forms.RadioButton();
                this.radioButton1 = new System.Windows.Forms.RadioButton();
                this.panel1.SuspendLayout();
                this.groupBox1.SuspendLayout();
                this.SuspendLayout();
                // 
                // panel1
                // 
                this.panel1.Controls.Add(this.button1);
                this.panel1.Controls.Add(this.groupBox1);
                this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.panel1.Location = new System.Drawing.Point(0, 0);
                this.panel1.Name = "panel1";
                this.panel1.Size = new System.Drawing.Size(508, 412);
                this.panel1.TabIndex = 0;
                // 
                // button1
                // 
                this.button1.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                this.button1.ForeColor = System.Drawing.Color.Blue;
                this.button1.Location = new System.Drawing.Point(389, 374);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(107, 26);
                this.button1.TabIndex = 1;
                this.button1.Text = "ПРИМЕНИТЬ...";
                this.button1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // groupBox1
                // 
                this.groupBox1.Controls.Add(this.radioButton2);
                this.groupBox1.Controls.Add(this.radioButton1);
                this.groupBox1.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                this.groupBox1.ForeColor = System.Drawing.Color.Blue;
                this.groupBox1.Location = new System.Drawing.Point(12, 12);
                this.groupBox1.Name = "groupBox1";
                this.groupBox1.Size = new System.Drawing.Size(484, 189);
                this.groupBox1.TabIndex = 0;
                this.groupBox1.TabStop = false;
                this.groupBox1.Text = "Стереть данные";
                // 
                // radioButton2
                // 
                this.radioButton2.AutoSize = true;
                this.radioButton2.Location = new System.Drawing.Point(23, 44);
                this.radioButton2.Name = "radioButton2";
                this.radioButton2.Size = new System.Drawing.Size(98, 21);
                this.radioButton2.TabIndex = 1;
                this.radioButton2.Text = "radioButton2";
                this.radioButton2.UseVisualStyleBackColor = true;
                // 
                // radioButton1
                // 
                this.radioButton1.AutoSize = true;
                this.radioButton1.Checked = true;
                this.radioButton1.Location = new System.Drawing.Point(23, 20);
                this.radioButton1.Name = "radioButton1";
                this.radioButton1.Size = new System.Drawing.Size(98, 21);
                this.radioButton1.TabIndex = 0;
                this.radioButton1.TabStop = true;
                this.radioButton1.Text = "radioButton1";
                this.radioButton1.UseVisualStyleBackColor = true;
                // 
                // Settings
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(508, 412);
                this.Controls.Add(this.panel1);
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
                this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
                this.MaximizeBox = false;
                this.MinimizeBox = false;
                this.Name = "Settings";
                this.ShowInTaskbar = false;
                this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
                this.Text = "Настройки";
                this.panel1.ResumeLayout(false);
                this.groupBox1.ResumeLayout(false);
                this.groupBox1.PerformLayout();
                this.ResumeLayout(false);
    
            }
    
            #endregion
    
            private System.Windows.Forms.Panel panel1;
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.GroupBox groupBox1;
            private System.Windows.Forms.RadioButton radioButton2;
            private System.Windows.Forms.RadioButton radioButton1;

    5 августа 2013 г. 9:30
  • Попробуйте заменить строку на эту

    RadioButton li = groupbox1.Controls.OfType<RadioButton>().Where(p => p.Checked).FirstOrDefault();

    if (li!=null)

    {

    switch...

    }

    5 августа 2013 г. 9:33
  • ошибка 
     private void button1_Click(object sender, EventArgs e)
            {
    
                RadioButton li = Controls.OfType<RadioButton>().Where(p => p.Checked).FirstOrDefault();
                else (li = null);
                switch (li.Tag.ToString())
                {
                    case "1":
                        MessageBox.Show("Вы Заполнили не все поля.", "Ошибочка!!!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        break;
                    case "2":
                        // Действия в случает выбора 2 Radiobutton
                        break;
                    case "3":
                        // Действия в случает выбора 3 Radiobutton
                        break;
                    case "4":
                        // Действия в случает выбора 4 Radiobutton
                        break;
    
                }
    Недопустимый элемент "else" в выражении


    5 августа 2013 г. 9:40
  • не else а if нужно и ; в конце строки уберите
    5 августа 2013 г. 9:52
  • все равно было ошибка и я добавил еще одно =

    if (li == null)

    ошибок больше нет, а когда запускаю выводит такую же ошибку как и в первый раз.

    5 августа 2013 г. 9:55
  • RadioButton li = groupbox1.Controls.OfType<RadioButton>().Where(p => p.Checked).FirstOrDefault();

    5 августа 2013 г. 10:04
  • да все равно ничего не получается. Во ту меня есть программа для создания зип архиа что с ней можно сделат


    смысл здесь то что мне надо, как только я вставляю код открытия формы или что нибудь другое то выводит ошибку. Я бы и эти пользовался.

    5 августа 2013 г. 10:16
  • ну в коде что вы показали вы пропустили фигурные скобки поэтому и показывается ошибка, должно быть так

    if (radioButton1.Checked)
    {
    AddSite newform = new AddSite();
    newform.WindowState = FormWindowState.Minimized;
    newform.Show();
    }
    else if (radioButton2.Checked)
    MessageBox.Show(...)
    else throw new Exception(....)

    • Помечено в качестве ответа motokraft 5 августа 2013 г. 13:30
    5 августа 2013 г. 10:48
  • все норм но форму она вообще не открывает
    5 августа 2013 г. 13:21
  • все, все работает у меня просто была подключена библиотека using System.Diagnostics; вот и ничего не работало а сейчас работает.
    5 августа 2013 г. 13:24