Деректер торының көрінісі ішіндегі құсбелгісі тексерілгенін не тексерілмегенін қалай тексеруге болады

datagridview ішіндегі құсбелгінің bool күйін қалай тексере аламын? Тексерілмеген жағдайда true және false болса. Кез келген адам маған көмектесе алады.

Is it possible to handle this in dataGridView_CellContentClick

3

5 жауаптар

Бұл MSDN беттерінде DataGridView үшін сәл жіберіледі мұнда және мұнда .

Атап айтқанда, олар:

DataGridViewCheckBoxCell ішіндегі нұқулар үшін бұл оқиға алдын-ала орындалады   құсбелгі ұяшығының өзгертулерінің мәні, сондықтан егер сіз есептеуді қаламасаңыз   ағымдағы мәнге негізделген күтілетін мән, сіз әдетте өзіңіз басқарасыз   орнына DataGridView.CellValueChanged оқиға. Өйткені бұл оқиға   тек қана пайдаланушы белгілеген мән жасалса ғана пайда болады   әдетте фокус ұяшықтан шығып кеткенде пайда болады, сонымен қатар, сіз оны өңдеуіңіз керек   DataGridView.CurrentCellDirtyStateChanged оқиға. Бұл өңдеушіде, егер болса   ағымдағы ұяшық - ұяшықтар ұяшығы, DataGridView.CommitEdit шақырыңыз   әдісі бойынша және Commit мәнінде өту.

Сондықтан олар CellClick типті оқиғаларды пайдаланудан бас тартады (өйткені олар ұяшықтан шыққанша мәнді ешқашан басып шығармайды), бірақ CurrentCellDirtyStateChanged және CommitEdit әдісін қолданыңыз.

Сонда сіз:

dataGridView1.CurrentCellDirtyStateChanged += new EventHandler(dataGridView1_CurrentCellDirtyStateChanged);
dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);

void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "CB")
    {
        MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());    
    }
}

void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

Ал тексерілген мәнді алу үшін - бұл DataGridViewCheckBoxCell мәнінің мағынасы ғана.

Сондықтан егер барсаңыз:

dataGridView1.Rows[rowindex].Cells[cellindex].Value 

Сізге құсбелгіге сәйкес келетін логикалық мән беріледі (өзгертілгеннен кейін).

6
қосылды
Бұл мен үшін жұмыс істейді David
қосылды автор Dorababu Meka, көзі

Сіз мұны осы жолмен алуға тырысуға болады, егер индексті негізге ала отырып торды шертіп отырсаңыз, тексерілген күйді табуға болады.

bool IsChecked = Convert.ToBoolean((dataGridView1[ColumnIndex, RowIndex] as DataGridViewCheckBoxCell).FormattedValue))
0
қосылды
Бірақ менің талаптарым бойынша бұл әрдайым false болады dataGridView_CellContentClick
қосылды автор Dorababu Meka, көзі

Ол 100% жұмыс істейді.

 private void grd_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            grd.CommitEdit(DataGridViewDataErrorContexts.Commit);
            bool Result = Convert.ToBoolean((grd[e.ColumnIndex, e.RowIndex] as DataGridViewCheckBoxCell).Value);
        }
0
қосылды

егер құсбелгі дизайнерде анықталса, бұл құсбелгісінің атына қарапайым және шынайы/false үшін оның «тексерілген» сипатын тексереді.

Бірақ, сіз код бойынша диспетчерге құсбелгісін қойып жатырсыз ба?

Бұл жағдайда сізде сілтемені құсбелгіге сақтау керек. Егер мен сіз тізімге детальге қосатын барлық құсбелгілерді қоссаңыз немесе оларды атаумен атауды қаласаңыз, мен оларды сөздікке қосатын болар едім.

Оқиғаны Checked_Changed құсбелгісіне қойып, оны таңдап, сипаттар панеліндегі кішкене бұрандалы белгішені басып, checkedChanged-оқиғасын тауып, оны екі рет сөндіру арқылы оқи аласыз.

оқиға-кодада теру арқылы басылған құсбелгіні алуға болады: CheckBox mycheckbox = жіберуші ретінде CheckBox;

содан кейін mycheckbox сілтемесіне жүгініңіз. Ол тексерілген болса немесе жоқ болса, оны алу үшін тексеріңіз.

0
қосылды
Мен сілтеме жасаған кезде checked сипатын ала алмаймын
қосылды автор Dorababu Meka, көзі
Егер біз DataGridViewCheckBoxCell-ді қолданатын болсақ, біз тек checked кодын ала аламыз,
қосылды автор Dorababu Meka, көзі
WinForms сұраймын
қосылды автор Dorababu Meka, көзі
Сіз маған үлгі кодын жібере алмадыңыз ба?
қосылды автор Dorababu Meka, көзі
Кешіріңіз, C# - регистрді ескереді, сондықтан «Checked» (C)
қосылды автор Mats Edvinsson, көзі
Жақсы, енді DataGridViewCheckBoxCell туралы айтқаныңызды түсінемін. бағанды ​​орнатқан кезде, FalseValue және TrueValue мәндерін орнатуға тура келеді деп ойлаймын. сосын сіз checkbox.Value сілтемесін жасаған кезде FalseValue-ге енгізген нәрсені алсаңыз, онда ол таңдалмаса, әйтпесе сіз TrueValue аласыз. Бұл көмектеседі деп үміттенемін :)
қосылды автор Mats Edvinsson, көзі
Мен айтқанымды ащы етудің ешқандай коды жоқ. Сіз DataGridViewCheckBoxCell.Value-ді тікелей алуға болатынын айттыңыз ба? дизайнерде болғанда, datagridview-ті тінтуірдің оң жақ түймешігімен басып, бағандарды өңдеуді нұқыңыз. құсбелгі жолағын таңдап, «Деректер» -табаны оң жақ бөлікте іздеңіз және құсбелгіні алып тастаған кезде DataGridViewCheckBoxCell.Value-тан алуды қалайтын FalseValue мәнін енгізіңіз, содан кейін сіз қалаған TrueValue мәнін енгізіңіз ол тексерілген кезде алынады
қосылды автор Mats Edvinsson, көзі
және егер сіз код бойынша құсбелгіні қоссаңыз, онда сіз мұны істей аласыз: `жеке void dataGridView1_CellContentClick (нысан жіберушісі, DataGridViewCellEventArgs e) {var checkcell = new DataGridViewCheckBoxCell (); checkcell.FalseValue = false; checkcell.TrueValue = true; dataGridView1 [0, 0] = checkcell;//Егер (((bool) (dataGridViewCheckBoxCell) dataGridView1 [0, 0]) құсбелгіні қосу() == true) {// құсбелгісі қойылса,
қосылды автор Mats Edvinsson, көзі
жаңа піскен жауап, себебі бұл оңай оқылмайды.
қосылды автор Mats Edvinsson, көзі
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    var checkcell = new DataGridViewCheckBoxCell();
    checkcell.FalseValue = false;
    checkcell.TrueValue = true;
    checkcell.Value = false;
    dataGridView1[0, 0] = checkcell; //Adding the checkbox

    if (((bool)((DataGridViewCheckBoxCell)dataGridView1[0, 0]).Value) == true)
    {
        //Stuff to do if the checkbox is checked
    }
}
0
қосылды
Бірақ бұл құсбелгіні бірінші рет басқан кезде жұмыс істемейді. Бұл құсбелгі тексерілген күйде болғанда жұмыс істейді
қосылды автор Dorababu Meka, көзі
ах, бұл байқадым. бірақ редакциясымен жұмыс істейді. just add: checkcell.Value = false;
қосылды автор Mats Edvinsson, көзі