2016-06-01 11 views
-2

複数の情報ブロックを保存できるアプリケーションを作成しようとしています。私は同じフィールドで、これの一番下に新しい「フォーム」を作成し、「次へ/新」ボタン(またはページまたはパネル)を追加したい。このの下部にある(すなわちC#Generate Panel Form

What my form looks like

新しいフォーム/ページ/パネル?私は 'Previous'と 'Next/New'ボタンも持っていますので、前に戻ったり、編集したり、前進してさらにフォームを作成し続けるという選択肢をユーザに与えたいと思います。

私の質問は、どうすればいいですか?フォームを生成するボタンはありますか?

ユーザー入力の最後に、すべての情報を保存します。エクセルファイルに保存します。

+0

あなたはどのフレームワークを使用していますか?私はそれがあまりにも広いので、この問題は閉鎖されると思う。 –

+0

ああ、申し訳ありません.C#Visual Studios 2015を使用しています。Windowsフォームアプリケーション – Havoux

+0

これは言語です。それはWinForms、WPF、ASP.netですか? –

答えて

1

複数のフォームを作成する理由はありません。同じフォームを再利用し、各フォームの情報をコレクションに格納するだけで、複数のフォームがあることをユーザーに知らせることができます。

フォームからすべての情報が含まれますクラスを作成します。

public class Information 
{ 
    public string Username { get; set; } 
    public string Workstation { get; set;} 
    // ...etc 
} 

その後、単にその後の情報

List<Information> list = new List<Information>(); 
int currentForm = 0; 

private void btnBack_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     SaveCurrentInfo(); 
     currentForm--; 
     ClearForm(); 
     Information info = list[currentForm]; 
     txtUsername.Text = info.Username; 
     txtWorkstation.Text = info.Workstation; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

private void btnNext_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     SaveCurrentInfo(); 
     currentForm++; 
     ClearForm(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
private void SaveForm() 
{ 
    Information info = new Information(); 
    info.Username = txtUsername.Text; 
    info.Workstation = txtWorkstation.Text; 
    // ...etc 
    if (currentForm < list.Count) 
    { 
     list[currentForm] = info; 
    } 
    else 
    { 
     list.Add(info); 
    } 
} 

private void ClearForm() 
{ 
    txtUsername.Text = string.Empty; 
    txtWorkstation.Text = string.Empty; 
    btnBack.Enabled = currentForm > 0; 
} 

の画面ごとにデータを格納するためのそれらのオブジェクトのコレクションを作成しますワークステーションを追加したときはいつでも、すべての "フォーム"を保存できます。