紳士淑女の皆様、残念ながら、初心者のことでお邪魔します。私はこの情報を何時間も検索したので、もし私が欲しいものを含むスレッドがあれば、それは私が見つけたよりも深く埋もれています.
これが私の最初の質問でしたが、Mark Hall は親切にも私を正してくれました。それ以来、新しいプロジェクトを作成し、最初の 3 つの画面 (コンテナー/ログイン、選択画面、メイン画面 (現在は空)) をユーザー コントロールとして再作成しました。ユーザーが複数のコレクションを持っている場合、選択画面がポップアップ表示され、コレクションを選択できます。
パラメーターで問題が発生しましたが、フォーム宣言をオーバーロードすることで解決しています (解決策はこちらにあります)。はい、呼び出しを介してパラメーターを送信する方がはるかに優れていることはわかっていますが、呼び出しを作成する必要はありません。各パラメーターに対して (私は?) そして… OK、OK、{get, set} よりもこちらの方が得意です。男、私は初心者になるのが嫌いです。
とにかく、選択フォームに問題があります。それを呼び出して閉じてから、メイン フォームに移動することができないようです。(コレクションが 1 つしかない場合) メイン フォームに直接進むことに問題はありません。はい、選択肢の datagridview を含めることができることはわかっていますが、一部のエンド ユーザーはツール シェッドの中で最も鋭い電球ではなく、手持ちが必要です。とにかく、ここにコードがあります。
コンテナ/ログイン画面
namespace DeleteThis
{
public partial class ContainerForm : Form
{
Main Main = new Main();
LoginCollectionChoice LoginChoice = new LoginCollectionChoice();
DataTable dtPermissions = new DataTable();
public ContainerForm()
{
InitializeComponent();
Main.ExitEvent += new Main.ExitEventHandler(Main_ExitEvent);
LoginChoice.ExitEvent += new
LoginCollectionChoice.ExitEventHandler(LoginChoice_ExitEvent);
}
void LoginChoice_ExitEvent(object sender, EventArgs e)
{
pnlcontainer.Controls.Remove(LoginChoice);
}
void Main_ExitEvent(object sender, EventArgs e)
{
pnlcontainer.Controls.Remove(Main);
}
private void btnLogin_Click(object sender, EventArgs e)
{
LoginProcedure();
}
private void LoginProcedure()
{
DataTable dtPermissions = AdminClass.GetCollectionsForUser(int.Parse(txtbxUserName.Text));
if (dtPermissions.Rows.Count == 1)
{
//Valid user, one collection. Head right in.
pnlcontainer.Controls.Add(Main);
Main.BringToFront();
}
else
{
//More than one collection found. Giving user choice
LoginCollectionChoice LoginChoice = new LoginCollectionChoice(dtPermissions);
pnlcontainer.Controls.Add(LoginChoice);
LoginChoice.BringToFront();
}
}
private void btnExitProgram_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
スニッピングで何も殺さなかったことを願っています。そして今度は選択画面…</p>
public partial class LoginCollectionChoice : UserControl
{
public delegate void ExitEventHandler(object sender, EventArgs e);
public event ExitEventHandler ExitEvent;
private static DataTable dtPermit;
DataTable dtPermissions = new DataTable();
public LoginCollectionChoice()
{
}
public LoginCollectionChoice(DataTable dtPermissions)
{
InitializeComponent();
GrdCollection.DataSource = dtPermissions;
dtPermit = dtPermissions;
}
private void btnChoose_Click(object sender, EventArgs e)
{
//Code for the user to choose a collection
ExitEvent(this, new EventArgs());
}
}
関係のないコードはすべて切り取りました。紳士淑女の皆さんが、この初心者が正しい道を歩むのを手伝ってくれることを願っています。どうか、優しくしてください、私が泣くのを見たくないでしょう?:) おー!また、すばらしいチュートリアル サイトをご存じでしたら、メールでお知らせください。ここでつまずいて質問するのに 1 週間を費やすよりも、チュートリアルに 1 週間を費やす方が好きです。どうもありがとうございました。