私は何百ものフォームを持つアプリケーションに取り組んでおり、フォームはさまざまな方法でそれぞれにリンクされています。
問題は、フォームに認証を適用したいということです。
私がしたことは、私の場合は「AUTH」である共通クラスからすべてのフォームを継承することです
Authで私がしたことは、OnLoadメソッドをオーバーライドすることであり、ここでいくつかの条件が満たされているかどうかを確認してから、フォームを表示するか、それ以外の場合は非表示にして他のフォームを表示します。
私のコードは次のとおりです。
public class Auth : Telerik.WinControls.UI.RadForm
{
protected override void OnLoad(EventArgs e)
{
if (<Some Condition>)
{
base.Hide();
frmAccessDenied fs = new frmAccessDenied();
fs.Show();
base.OnLoad(e);
}
else
{
base.OnLoad(e);
}
}
}
この場合に何が起こったかというと、frmAccessDenied を開くとアプリケーションがクラッシュし、Error Making HANDLERというメッセージが表示されます。
そして、私がフォームを開いている場所を指しています
Form childForm = new frmMyFORM();
childForm.MdiParent = this;
**==>>>Crashed HERE** childForm.Show();