3

という名前の設定フォームに製品frmMain を追加すると(ボタンを使用して)自動的に入力される、という名前のフォームにあるC#にコンボボックスがあります。ボタンをクリックすると、新しく追加された製品が表示されます。button1_ClickfrmSettingsbutton1_ClickfrmMain

使ってみた

frmMain main = new frmMain();
main.Close();
main.Show();

このコードがとても面白いことは知っていますが、うまくいきませんでした。:D

これがWindowsフォームです!

編集

理解を深めるために、私のプログラムのこの画像を見てください。これは私のfrmMain ここに画像の説明を入力

これが私の設定frmSettingsフォームの外観です。したがって、送信ボタンをクリックするfrmMainとわかるように、設定に追加した更新された値がfrmMainコンボボックスに表示されるように、リロードする必要があります。

ここに画像の説明を入力

4

9 に答える 9

6

更新: 質問を変更したため、製品を更新するための更新版がここにあります

これはあなたの製品フォームです:

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()次に、別のボタンなど、フォームのどこからでも呼び出すことができます。この例では、製品を格納するためにローカル変数のみを使用しています。製品を追加するための特定のチェックが欠けていることもありますが、あなたはその考えを理解していると思います...

于 2013-04-09T08:08:27.500 に答える
1

必要に応じてすべての値を設定する組み込みの方法はありません。すべてのコントロールの必要な設定でメソッドを作成する必要があるというコメントで述べたように、サンプル コードは次のとおりです。

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
}
于 2013-04-09T08:02:37.857 に答える
1

このコードを試してください。

this.Refresh();
Application.Doevents();
于 2014-03-08T18:28:40.357 に答える
0

ユーザーコントロールからページを更新しようとしている場合は、ユーザーコントロールからフォームを更新している例を次に示します。このリロードボタンがあるフォームを見つけます。次に、無効化タブ コントロールを呼び出して更新します。

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
于 2015-03-25T12:14:32.933 に答える
0

フォームを無効化したい

http://msdn.microsoft.com/en-us/library/598t492a.aspx

于 2013-04-09T07:48:25.377 に答える