R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

認証して起動する(その2)

前回の内容では、Application.Run せずに、ShowDialog() していました。
Application.Run() を起動してから諸々の処理を行わせるようにしないと、いろいろ問題が生じるそうです。
(メッセージポンプしゅぽしゅぽとか。メッセージループぐるぐるとか、そういうものの関係だそうです)

詳しくは、昨日の記事やコメントを参照して下さい。
http://blogs.wankuma.com/rti/archive/2006/12/25/53572.aspx

中さんのサンプルにもありましたが、Application.Run(New 認証フォーム()) として、認証フォーム内で認証させた結果で、メインフォームを開けば良いのです。
しかし、僕としては、やはり Application.Run(New メインフォーム()) と書きたいのです。
で、以下のようにしました。

今度はどうですか~?


public static class Program
{
  [STAThread]
  static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    using (MainForm mainForm = new MainForm()) {
      Application.Run(mainForm);
    } // Dispose()
  }
}

public sealed partial class MainForm : Form
{
  private void MainForm_Shown(object sender, EventArgs e) {
    bool b = false;
    using (ユーザー認証 f = new ユーザー認証()) {
      if (f.ShowDialog() == DialogResult.Cancel) {
        this.Close();
      }
    } // Dispose()
  }
}

public partial class ユーザー認証 : Form
{
  public ユーザー認証() {
    this.InitializeComponent();
    this.DialogResult = DialogResult.Cancel;
  }

  private void okButton_Click(object sender, EventArgs e) {
    if (! this.無事認証された()) {
      MessageBox.Show("認証失敗です!!");
      return;
    }
    this.DialogResult = DialogResult.OK;
    this.Close();      
  }

  private void cancelButton_Click(object sender, EventArgs e) {
    this.DialogResult = DialogResult.Cancel;
    this.Close();
  }

  private bool 無事認証された() {
    // ここに認証コードを書く
  }
}


この方法では、メイン画面が表示された状態で認証フォームが表示されます。
これが嫌な人は、別の方法を考えて、ここにフィードバックして下さいw

投稿日時 : 2006年12月26日 11:17

Feedback

# re: 認証して起動する(その2) 2006/12/26 22:24 中博俊

名指しするとスルーされちゃう罠

# re: 認証して起動する(その2) 2006/12/27 9:08 R・田中一郎

すみません。修正しておきました。_(_*_)_
皆さんのツッコミもお待ちしております。

# VB6 のスタートアップ 2007/01/29 9:12 R.Tanaka.Ichiro's Blog

VB6 のスタートアップ

タイトル  
名前  
Url
コメント