Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > uncheck ?!


Автор: question 20.6.2008, 13:23
Здравствуйте!
подскажите пожалуйста. как в чеклистбоксе сделать так, чтобы с элемента, который выделен уже нельзя было снять эту отметку? там же наверное свойство какое-нибудь есть... не могу найти что-т нигде...

Автор: Bishop 20.6.2008, 14:13
question, 
свойств таких нет. Сделать это можно в обработчике события ItemCheck:
Код

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    //if (e.CurrentValue == CheckState.Checked)
        e.NewValue = CheckState.Checked;
}

Автор: question 20.6.2008, 14:44
Ок буду знать... smile 

но есть проблемка...это работает для чеклистбокса, скажем, обычного...
а у меня при выборе итема чеклистбокса на одной форме, вызывается другая форма, и здесь уже почему-то предложенный способ не работает  smile (((
как быть?!

Автор: Dennnis 20.6.2008, 20:54
У тебя CheckBox в ListView'е что ли?

Автор: question 21.6.2008, 16:04
Нет)
Так, каюсь, надо было с самого начала грамотно все описать)
Код

namespace WindowsApplication11
{
    public partial class Form1 : Form
    {
        string[] myNumbers;
        public Form1()
        {
            InitializeComponent();
            myNumbers = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
            checkedListBox1.Items.AddRange(myNumbers);
            checkedListBox1.CheckOnClick = true;
        }
        private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
        {            
            Form2 form2 = new Form2();
            form2.ShowDialog();
        }
    }
}

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

Автор: Bishop 21.6.2008, 17:35
question, всё равно непонятно, что ты пытаешься сделать. Так:
Код

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.CurrentValue == CheckState.Unchecked)
    {
        Form2 form2 = new Form2();
        form2.ShowDialog();
    }
    e.NewValue = CheckState.Checked;
}
?
Цитата(question @  21.6.2008,  16:04 Найти цитируемый пост)
чтобы обратно ничего исправить было уже нельзя...
Считаю, в корне неверный подход к проектированию интерфейса.

Автор: question 21.6.2008, 17:44
Огромное-огромное спасибо!!! *понимаю, дико туплю. надо больше спать*
подход, действительно, неправильный, но сессия зло, сами понимаете)
еще раз спасибо всем!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)