0

Windows アプリケーションで、 と という名前の 2 つのフォームを作成していForm1ますConfiguration_Form。まず、ロードしていConfiguration_Formます。このフォームでは、txt ファイルへの接続を確認します。txt ファイルにデータが含まれている場合は、それが読み込まれることを意味しますForm1。そうしないと、Configuration_Form は何もロードしません。

ここで問題が発生しました。txt ファイルにデータが含まれているとします。これは、Form1別の空のフォームを読み込んで開くことを意味します。Form1空のフォームではなく、のみを表示したい。その空のフォームをブロックするにはどうすればよいですか?

これは私の部分的なコードです:

      public partial class Configuration_Form : Form
{
    Form1 form = new Form1();
    public Configuration_Form()
    {
        StreamReader tr = new StreamReader(Application.StartupPath + "\\" + "config.txt");

        string config = tr.ReadToEnd();
        if (config.Replace("\r\n", string.Empty) == "")
        {
            tr.Close();
            InitializeComponent();
        }
        else
        {
            form.Show();
        }
    }
    ///////////////////////////
   private void btn_submit_Click(object sender, EventArgs e)
    {
        try
        {
            if ((txtIP.Text != "") && (txtdatabase.Text != "") && (txtuser.Text != "") && (txtpass.Text != ""))
            {
                StreamWriter sr = new StreamWriter(Application.StartupPath + "\\" + "config.txt");
                sr.Write(Convert.ToString((txtIP.Text) + ";" + (txtport.Text) + ";" + (txtdatabase.Text) + ";" + (txtuser.Text) + ";" + (txtpass.Text)));
                sr.WriteLine();
                sr.Close();
                this.Hide();
                form.Show();

            }
            else
            {
                DialogResult msg = MessageBox.Show("All are mandatory fileds!", "SBS-BIO-CONFIG Administrator", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                if (Convert.ToBoolean(msg) == true)
                {
                    this.Show();
                }
            }
        }
        catch (Exception e1)
        {
            MessageBox.Show("'" + e1.Message + "'");
        }
    }

Form1コードは次のとおりです。

    public partial class Form1 : Form
{

    MySqlConnection con;
    MySqlCommand cmd;
    MySqlDataAdapter DA;
    MySqlDataReader DR;
    DataSet DSS;

    #region Form_Load

    public Form1()
    {
        InitializeComponent();
    }

これが私のProgram.csコードです:

   namespace BIO_PUNCH_UPDATE
   {
static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Configuration_Form());
    }
}
}

このエラーを修正するのを手伝ってください。

4

1 に答える 1

0

構成データに応じて、フォームの1つをロードする必要があると思います。もしそうなら、ここにコードがあります:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form form;

        StreamReader tr = new StreamReader(Application.StartupPath + "\\" + "config.txt");

        string config = tr.ReadToEnd();
        tr.Close();
        if (string.IsNullOrWhiteSpace(config))
        {
            form = new Configuration_Form();
        }
        else
        {
            form = new Form1();
        }

        Application.Run(form);
    }

また、いずれかの形式の構成データが必要な場合は、構成文字列をコンストラクターパラメーターとして渡すことができます。

于 2012-06-09T12:08:06.007 に答える