Невозможно редактировать значения в DataGridView (используя BindingList) - PullRequest
1 голос
/ 12 декабря 2010

Кажется, что из-за неизвестной причины я теперь не могу редактировать что-либо в моем DataGridView.Значение свойства ReadOnly в DGV равно false, и для всех столбцов, кроме одного, свойство ReadOnly также имеет значение false.

Я начинаю думать, что это может быть связано со специальным значением, которое я пытался добавить водин из моих классов, тот, который я только хотел изменить в классе, но все же читать только для публики.Я не думаю, что это значение мешает с чем-то еще, но тем не менее, вот соответствующая часть моего кода:

        private void loaderWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        loadingBar.Value = e.ProgressPercentage;
        if (e.UserState != null)
        {
            savefiles.Add((SaveFile)e.UserState);
        }
    }

Где savefiles - это BindingList, а SaveFile - это мой класс:

public class SaveFile
{
    private string d_directory;
    private int d_weirdnumber;
    private bool d_isautosave;
    private string d_fullname;
    private string d_datatype;
    private string d_owner;
    private bool d_isquicksave;
    private string d_title;
    private string d_gametime;

    public SaveFile() { }

    public SaveFile(string directory, int weirdnumber, bool isautosave, string fullname, string datatype, string owner, bool isquicksave, string title)
    {
        d_directory = directory;
        d_weirdnumber = weirdnumber;
        d_isautosave = isautosave;
        d_fullname = fullname;
        d_datatype = datatype;
        d_owner = owner;
        d_isquicksave = isquicksave;
        d_title = title;
    }

    public string Gametime
    {
        get { return d_gametime; }
    }

    public string Datatype
    {
        get { return d_datatype; }
        set { d_datatype = value; }
    }

    public string Title
    {
        get { return d_title; }
        set { d_title = value; }
    }

    public bool IsQuickSave
    {
        get { return d_isquicksave; }
        set { d_isquicksave = value; }
    }

    public bool IsAutoSave
    {
        get { return d_isautosave; }
        set { d_isautosave = value; }
    }

    public string Directory
    {
        get { return d_directory; }
        set { d_directory = value; }
    }

    public string FullName
    {
        get { return d_fullname; }
        set
        {
            d_fullname = value;
            string[] split = value.Split(new char[]{'-'});
            foreach (string str in split)
            {
                if (System.Text.RegularExpressions.Regex.IsMatch(str, "^\\d\\d:\\d\\d:\\d\\d$"))
                {
                    d_gametime = str;
                }
            }
        }
    }

    public int Weirdnumber
    {
        get { return d_weirdnumber; }
        set { d_weirdnumber = value; }
    }

    public string Owner
    {
        get { return d_owner; }
        set { d_owner = value; }
    }
}

Gametime - это то особенное свойство, о котором я упоминал ранее.У него нет функции set, но в соответствии с this я должен быть в чистоте, верно?

Может кто-нибудь тогда сказать мне, почему я не могу редактировать какие-либо изячейки DGV?

РЕДАКТИРОВАТЬ: Я только что обнаружил, что не установка AutoGenerateColumns в ложь позволяет мне редактировать снова, но я до сих пор не знаю, почему.

1 Ответ

3 голосов
/ 12 декабря 2010

Через несколько часов друг наконец-то взглянул на него через Remote Desktop. Он написал функцию, заставляющую все столбцы иметь статус не только для чтения, и поймите, что это сработало. Итак, мы посмотрели на свойства столбцов в редакторе, и почему-то ... я не знаю почему ... все они были установлены только для чтения Клянусь, я проверял их 4 раза раньше.

Урок этой истории (наверное): если сомневаетесь, проверьте свои настройки. Когда не сомневаешься, становись сомнительным. В противном случае, отправьте отчет об ошибке в Microsoft: \

...