لماذا لا يمكنني تحرير القيم في DataGridView الخاص بي، على الرغم من عدم تعيينها على Readonly؟

StackOverflow https://stackoverflow.com/questions/915426

سؤال

لدي DataGridView، والتي لم يتم تعيينها على Readonly. لم يتم ضبط أي من أعمدةها على Readonly، والكائن لا بد أن يتم تعيينها إلى Readonly. ومع ذلك، لا يمكنني تحرير عناصر DataGridView؟ يتم تعيين خاصية ماذا يحدث هنا؟

هل كانت مفيدة؟

المحلول

اتضح أنه إذا كان DataGridView الخاص بك مرتبطا بقراءة ReadOnlyCollection، فيمكنك تحديد أي عنصر ببرمجة أي عنصر في المجموعة، فسيقوم بتقييد DataGridView من تغيير القيم. لست متأكدا مما إذا كان هذا السلوك مقصلا، لكن شيء ما لمشاهدةه.

نصائح أخرى

هذه مجرد تعليق تمديد (وبالتالي Wiki) في العداد إلى "DataGridView ستقيدك من تغيير بعض القيم (سلاسل) ولكن ليس القيم الأخرى (المرض)" لا قابلة للتحرير؛ اجعلها List<T> وكلاهما قابلة للتحرير ...:

using System;
using System.Collections.ObjectModel;
using System.Windows.Forms;
class Test
{
    public string Foo { get; set; }
    public bool Bar { get; set; }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        var data = new ReadOnlyCollection<Test>(
            new[] {
                new Test {Foo="abc", Bar=true},
                new Test {Foo="def", Bar=false},
                new Test {Foo="ghi", Bar=true},
                new Test {Foo="jkl", Bar=false},
            });
        Application.Run(
            new Form {
                Text = "ReadOnlyCollection test",
                Controls = {
                    new DataGridView {
                        Dock = DockStyle.Fill,
                        DataSource = data,
                        ReadOnly = false
                    }
                }
            });
    }
}

كيف تتغلق إلى DataGridView الخاص بك؟ شيء واحد هو أنه إذا كنت تستخدم قائمة LinQ حيث تسأل DataSource من قاعدة بيانات ولن يكون لديك كائن كامل، ثم تتميز الخصائص كائن ما لم تحدد "مع جديد" في وظيفة تحديد. لا يوجد الكثير من المعلومات في مشاركتك. آمل أن يساعد هذا.

لقد قمت بتثبيت VS 2013 بالأمس فقط، وأحدث البناء (تحديث 5) وما زال علة لا يزال يؤدي إلى أن السلوك الذي تصفه.

باختصار في العمل حول الخطأ، تأكد أولا من تعيين DataGridView لتكون غوي قابلة للتحرير. هذا يشمل بشكل خاص السهم الصغير في مصمم النموذج في أعلى يمين التحكم. في arrow Drop Down هو خيار "تمكين التحرير"، تأكد من تمكينه. الآن في "مصمم النموذج" تحرير الأعمدة بطريقة رئيسية (مثل إضافة أو إزالة عمود). هذا كل شيء، عند تشغيل البرنامج، يجب أن تجد تحرير GUI يعمل الآن.

لإعادة إنتاج هذا الخطأ، ضمن مصمم النموذج استخدم السهم الصغير في أعلى يمين عنصر تحكم DataGridView لتعيين "تمكين التحرير" إلى False. الآن قم بتغيير كبير في الأعمدة (مثل إضافة أو إزالة عمود). ترجمة وتشغيل البرنامج. الآن عد إلى السهم الصغير وإعادة تمكين خانة الاختيار "تمكين التحرير". قم بتشغيل البرنامج مرة أخرى. في هذه المرحلة، يتجلى الخطأ نفسه، وسوف تجد أن DataGridView غير قابل للتحرير الوطني، على الرغم من أنك قمت بتكوين خلاف ذلك في مقابل

يأخذ datagridview المهمة وانقر فوق "تحرير العمود" اضبط العمود على قراءة الممتلكات فقط إلى False

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top