Я новичок в C# и как бы крыло его. с помощью Microsoft Visual C# 2010Невозможно получить доступ к размещенному объекту C# (showdialog dispose)
Я проверил множество подобных постов и ни одно из предложений не похоже, чтобы помочь
Я получаю следующее сообщение об ошибке: «Не удается получить доступ к расположенную объект» , который ссылается на главную форму здесь
private void btn_RunPkgs_Click(object sender, EventArgs e)
{
RunPackages rp = new RunPackages();
this.Hide();
rp.ShowDialog();//The error points to this line
this.Show();
}
вот код, который взрывается, когда проверка безопасности не удалась.
private void securityCheck()
{
if (MyGlobals.FormCheck("RUN_JOBS") == 1)
{
InitializeComponent();
}
else
{
//this.BeginInvoke(new MethodInvoker(this.Close));
//this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
MessageBox.Show("You do not have permission to access this form!");
//this.Close();
this.Dispose();
}
}
EDIT Похоже, я собираюсь пойти с идеей Адриано Репетти в проставления безопасности, где я называю эту страницу, но я немного нервничаю, имеющие какую-либо безопасность на этой странице.
private void btn_RunPkgs_Click(object sender, EventArgs e)
{
if (MyGlobals.FormCheck("RUN_JOBS") == 1)
{
RunPackages rp = new RunPackages();
this.Hide();
rp.ShowDialog();
this.Show();
}
else
{
MessageBox.Show("Not for You!");
}
}
private void btn_ListUpdater_Click(object sender, EventArgs e)
{
if (MyGlobals.FormCheck("MDM") == 1)
{
ListUpdater lu = new ListUpdater();
this.Hide();
lu.ShowDialog();
this.Show();
}
else
{
MessageBox.Show("Private!");
}
}
EDIT2 Придумал следующее возможное решение, но я нервничал, чтобы использовать его, потому что я новичок в этом и не знают, какие вопросы там может быть. Любые проблемы с просто созданием обработчика событий для загрузки формы?
namespace RunPackages
{
public partial class ListUpdater : Form
{
public ListUpdater()
{
InitializeComponent();
this.Load += new EventHandler(securityCheck);
}
private void securityCheck(object sender, EventArgs e)
{
if (MyGlobals.FormCheck("MDM1") == 0)
{
MessageBox.Show("Not Allowed!");
this.Close();
}
}
'this.Dispose()', что вы пытаетесь Dispose? Почему ты это называешь? –
Я написал проверку безопасности, если пользователь терпит неудачу для этой конкретной формы, я хочу, чтобы она отображала окно с сообщением об ошибке и закрывала эту форму, возвращаясь к основной форме. Я сначала попробовал это. Clos – Lazer
Это потому, что вы 'Disposing' формы во время' ShowDialog' так взрываются, потому что он не может ссылаться на себя после этого момента, так что угадайте, есть ли еще код, который вы нам не показываете. – Belogix