-1

プライマリデータベースアプリケーションには、指定された作業指示書に対してExcelワークブックまたはAccessmdbのいずれかをエクスポートする機能があります。これらのファイルは、必要なデータを入力するために下請け業者に送信されます。ファイルに接続し、プライマリデータベースにインポートする前に確認するためにデータを表示するアプリケーションを構築しています。簡単ですね。これが私の問題です。アプリケーションは、ユーザーがセッションのデータソースとなるファイルを選択するためのOpenFileDialogボックスを開きます。それは完璧に機能します。その後にMessageBoxを開くと、そのボックスは他の開いているウィンドウの後ろに開きます。その後、彼らは正しく応答します。エラー処理にMessageBoxを使用することだけを期待していますが、問題は複雑です。誰かがこの問題に遭遇しましたか?

コード内のMessageBoxは、パスが正しいことを確認し、この問題を解決するためだけのものです。しかし、ここに私のコードがあります:

    private void SubContractedData_Load(object sender, EventArgs e)
    {
        string FilePath;
        string ext;
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "Microsoft Access Databases |*.mdb|Excel Workbooks|*.xls";
        ofd.Title = "Select the data source";
        ofd.InitialDirectory = ElementConfig.TransferOutPath();

        if (ofd.ShowDialog() == DialogResult.OK)
        {
            FilePath = ofd.FileName.ToString();
            ext = FilePath.Substring((FilePath.Length - 3));
            if (ext == "xls")
            {
                MessageBox.Show(FilePath);
                AccessImport(FilePath);
            }
            else if (ext == "mdb")
            {
                MessageBox.Show(FilePath);
                AccessImport(FilePath);
            }
        }
        else
        {
            System.Windows.Forms.Application.Exit();
        }
    }
4

2 に答える 2

1

メッセージボックスを使用してコードをデバッグすることはお勧めできませんが、当面の問題は、フォームのロードイベントでこれを実行していることだと思います。

このようにしてみてください:

protected override void OnShown(EventArgs e) {
  base.OnShown(e);

  // your code
}
于 2013-02-07T22:10:48.723 に答える
0

Formフォームがまだ表示されていないため、問題は間違いなく、の読み込み中にこれを実行しようとしているという事実です。

もう1つの方法は、この機能をLoadイベントから移動し、ユーザーに押すボタンなどを提供することです。

言い換えると:

private void SubContractedData_Load(object sender, EventArgs e)
{
    // unless you're doing something else, you could remove this method
}

この機能を処理するボタンを追加します。

private void SelectDataSourceClick(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "Microsoft Access Databases |*.*|Excel Workbooks|*.xls";
    ofd.Title = "Select the data source";
    ofd.InitialDirectory = ElementConfig.TransferOutPath();

    if (ofd.ShowDialog() == DialogResult.OK)
    {
        var FilePath = ofd.FileName.ToString();
        var ext = Path.GetExtension(FilePath).ToLower();

        switch (ext)
        {
            case ".xls":
                MessageBox.Show(FilePath);
                AccessImport(FilePath);
                break;
            case ".mdb":
                MessageBox.Show(FilePath);
                AccessImport(FilePath);
                break;
            default:
                MessageBox.Show("Extension not recognized " + ext);
                break;
        }
    }
    else
    {
        System.Windows.Forms.Application.Exit();
    }
}
于 2013-02-07T23:00:01.130 に答える