Помощ за една задачка


0

Здравейте, в училище ни дадоха следната задача:

Да се направи windows forms application, в който трябва да се направи бутон, който изкарва 3 чекбокса първия е Bold, втория Italic  и третия Underline. От мен се иска да го направя като цъкнеш тикчето на Bold това Bold да става удебелено, като цъкна тикчето на Italic да става наклонено и на Underline да се подчертава.

Аз уж го направих, но като цъкна на чекбокса нищо не става. Мисля, че не се обновява нещо, защото като му задам по подразбиране да е чекнат го удебелява, накланя и подчертава.

Ето го кода: 

        private void button1_Click(object sender, EventArgs e)
        {
            GroupBox g = new GroupBox();
            g.Name = "GroupBox1";
            g.BackColor = Color.LightGray;
            g.ForeColor = Color.OrangeRed;
            g.Text = "Font Style";
            g.Font = new Font("Arial", 12);
            g.Location = new Point(10, 10);
            g.Width = 250;
            g.Height = 200;
 
 
            CheckBox c1 = new CheckBox();
            CheckBox c2 = new CheckBox();
            CheckBox c3 = new CheckBox();
 
            c1.Text = "Bold";
            c2.Text = "Italic";
            c3.Text = "Underline";
            c1.Location = new Point(30, 40);
            c2.Location = new Point(30, 80);
            c3.Location = new Point(30, 120);
            g.Controls.AddRange(new Control[] { c1, c2, c3 });
            this.Controls.Add(g);
            g.Enabled = true;
 
 
            if (c1.Checked == true)
            {
                c1.Font = new Font(c1.Font, FontStyle.Bold);
            }
            else
            {
                c1.Font = new Font(c1.Font, FontStyle.Regular);
            }
            if (c2.Checked == true)
            {
                c2.Font = new Font(c2.Font, FontStyle.Italic);
            }
            else
            {
                c2.Font = new Font(c2.Font, FontStyle.Regular);
            }
            if (c3.Checked == true)
            {
                c3.Font = new Font(c3.Font, FontStyle.Underline);
            }
            else
            {
                c3.Font = new Font(c3.Font, FontStyle.Regular);
            }
        }
 
Благодаря предварително :) 

в C# Programming от georgi.angelov (0 точки)


Отговори



0
Както е казал колегата по-горе ти извършваш всичко в клик ивента на бутона. Ето един примерен код, който при мен подейства:
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;
namespace WindowsFormsApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { groupBox.Visible = true; }
private void checkBoxBoldCheckedChanged(object sender, EventArgs e) { checkBoxBold.Font=new Font(checkBoxBold.Font,FontStyle.Bold); }
private void checkBoxItalicCheckedChanged(object sender, EventArgs e) { checkBoxItalic.Font = new Font(checkBoxItalic.Font, FontStyle.Italic); }
private void checkBoxUnderlineCheckedChanged(object sender, EventArgs e) { checkBoxUnderline.Font = new Font(checkBoxUnderline.Font, FontStyle.Underline); } } }

PS: като преди това в дизайнера от toolbox-а си добавяш елементите във формата.

от veskoiv (0 точки)


0

Колега ти тези неща ги правиш при клик на бутона, а на теб ти трябват да ги направиш при клик на съответния чекбокс. Така както си го написал ти, при клик на бутона и трите чекбокса имат стойност Cheked = false и не се влиза в if-овете. А когато натиснеш върху някой от чекбоксовете въобще не се влиза в този метод. Бих ти препоръчал тази функционалност да я напишеш на клиента. С jquery ще стане много лесно. Например:
 

$('#div-with-checkboxes').on('click', 'input', function() {
    switch ($(this).attr('id')) {
        case "checkbox-bold":
            switchStyles($(this), 'font-weight', 'bold', 'normal');
            break;
        case "checkbox-italic":
            switchStyles($(this), 'font-style', 'italic', 'normal');
            break;
        case "checkbox-underline":
            switchStyles($(this), 'text-decoration', 'underline', 'none');
            break;
    }
});
 
function switchStyles(element, firstParam, secondParam, thirdParam) {
    if(element.prop('checked')) {
        element.parent().css(firstParam, secondParam);
    }
    else {
        element.parent().css(firstParam, thirdParam);
    }
}

от hrist0.stoichev (1121 точки)


0
Колега, нещо си се объркал. Не знам за какъв клиент говориш, при положение че става въпрос за Windows Forms.

от Depressor (55 точки)

0
Извинявам се... Прочел съм web forms... Чак сега разбирам защо ми беше малко странно да чета кода. :)

от hrist0.stoichev (1121 точки)