C#にコンボボックスがあり、frmMain
という名前のフォームに配置されています。これは、設定フォームにfrmSettings
という名前の製品を追加すると(ボタンbutton1_Click
を使用して)自動的に入力されます。ボタンbutton1_Click
をクリックすると、新しく追加された製品のfrmMain
が表示されます。
使ってみました
frmMain main = new frmMain();
main.Close();
main.Show();
このコードがとても面白いことは知っていますが、うまくいきませんでした。 :D
これはウィンドウフォームです!
[〜#〜]編集[〜#〜]
理解を深めるために、私のプログラムのこの画像をご覧ください。これは私のfrmMain
です
frmSettings
フォームの設定は次のようになります。したがって、送信ボタンをクリックするとわかるように、frmMain
を再読み込みして、設定に追加した更新された値がfrmMain
コンボボックスに表示されるようにします。
更新:質問を変更したので、ここに製品を更新するための更新バージョンがあります
これはあなたの製品フォームです:
_private frmMain main;
public frmSettings(frmMain mainForm)
{
main = mainForm;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
main.AddProduct(textBox1.Text);
}
_
データを渡すには、コンストラクターにメインフォームが必要です。
そして主な形式:
_private frmSettings settings;
private List<string> products = new List<string>();
public frmMain()
{
InitializeComponent();
//load products from somewhere
}
private void button1_Click(object sender, EventArgs e)
{
if (settings == null)
{
settings = new frmSettings(this);
}
settings.Show();
}
private void UpdateForm()
{
comboBoxProducts.Items.Clear();
comboBoxProducts.Items.AddRange(products.ToArray());
//Other updates
}
public void AddProduct(string product)
{
products.Add(product);
UpdateForm();
}
_
次に、フォームのどこからでもUpdateForm()
を呼び出すことができます。たとえば、別のボタンです。この例では、ローカル変数のみを使用して商品を保存しています。製品を追加するための特定のチェックが欠落していることもありますが、私はあなたがアイデアを得ると思います...
必要に応じてすべての値を設定するための組み込みメソッドはありません。コメントで述べたように、すべてのコントロールに必要な設定を使用してメソッドを作成する必要があります。サンプルコードは次のとおりです。
private void ReloadForm()
{
comboBox.ResetText();
dataGridView.Update();
//and how many controls or settings you want, just add them here
}
private void button1_Click(object sender, EventArgs e)
{
ReloadForm(); //and call that method on your button click
}
this.Close();
frmMain main = new frmMain();
main.Show();
this.Refresh();
Refresh();
this.Hide();
frmScholars ss = new frmScholars();
ss.Show();
このコードを試してください。
this.Refresh();
Application.Doevents();
Usercontrolからページを更新する場合。usercontrolからフォームを更新する例を次に示します。このリロードボタンがあるフォームを見つけてください。次に、無効化タブコントロールを呼び出して更新します。
Dim myForm As Form = btnAuthorise.FindForm()
For Each c As Control In myForm.Controls
If c.Name = "tabControlName" Then
DirectCast(c, System.Windows.Forms.TabControl).Invalidate()
DirectCast(c, System.Windows.Forms.TabControl).Refresh() 'force the call to the drawitem event
End If
Next