2013-11-17 3 views
-2

У меня есть форма, которая является основной формой, с которой пользователь будет работать. Когда пользователь нажимает кнопку, загружается другая форма (это отображает список клиентов и т. Д.).Не удается получить доступ к объекту

Когда я выхожу из формы клиента, а затем снова нажимаю кнопку, я получаю сообщение об ошибке «Не удается получить доступ к удаленному объекту».

Любые идеи? Я новичок в этом.

custForm custForm = new custForm(); 
    private void button5_Click(object sender, EventArgs e) 
    { 
     custForm.Show(); 
    } 
+2

Вероятно, показывая код, который вызывает эта вторая форма поможет много – Steve

+1

Пожалуйста, прочитайте http://tinyurl.com/so-hints, чтобы узнать, как правильно спросить. –

+0

Возможно, вам нужно создать «новый FormListOfCustomer()» при нажатии кнопки. Поскольку другой экземпляр был размещен на «Exit» – Mate

ответ

1

Проблема проста. Вы объявляете вне метода клика переменную формы. Это переменная экземпляра класса, что означает, что она видна во всех методах класса, в котором содержится.

Но когда вы закрываете custForm через свою собственную кнопку, эта переменная указывает на расположенный объект, что означает, что область данных, указанная переменной, была освобождена и доступна для повторного использования другой частью вашей программы.

Ошибка времени выполнения говорит обо всем. Вы не можете получить доступ к этой области.

Возможный способ обхода, чтобы проверить свойство IsDisposed и если она возвращает ИСТИНА воссоздавать форму

custForm cf = new custForm(); 
private void button5_Click(object sender, EventArgs e) 
{ 
    if(cf == null || cf.IsDisposed == true) 
     cf = new custForm(); 

    cf.Show(); 
} 
+0

Хорошо работает, я где-то читал о родительских и дочерних формах, является ли что-то, что мне нужно, при использовании нескольких форм? – Tom

+0

Не уверен, что понял, но, как правило, вам не нужны эти отношения. – Steve

+0

Это что-то, что мне нужно для чтения или мне не нужно беспокоиться об этом? – Tom

1

Вы просто не повторного использования инстанция, которая уже размещали может (см IDisposable). Вам нужно создать новый экземпляр другой формы, чтобы снова открыть его.

Смежные вопросы