我有一個包含按鈕和一些子窗體的Mdiparent窗體。 單擊父窗體中的按鈕時,如何更改所有子窗體中所有文本框的背景顏色?如何更改父窗體中子窗體控件的屬性
-1
A
回答
1
這個ChilForm
;
public ChilForm()
{
InitializeComponent();
}
public void ChangeTextboxColor()
{
textBox1.BackColor = Color.Yellow;
}
而這是Parent
;
ChilForm frm = new ChilForm();
public Parent()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Shows the child
frm.Show();
}
private void button2_Click(object sender, EventArgs e)
{
//Changes color
frm.ChangeTextboxColor();
}
+1
儘管這會起作用,但它會要求您實例化所有子窗體並獨立調用其方法。另一種方法是使用可觀察模式或至少使用事件。 –
+0
是的,它的工作,謝謝伊爾沙德。 :) – Behnam
2
我知道答案已經給出..但我會用事件和代表去.. 多點傳送代表是最好的選擇是在這裏 所以這裏是我的解決方案。
namespace winMultiCastDelegate
{
public partial class Form1 : Form
{
public delegate void ChangeBackColorDelegate(Color backgroundColor);
//just avoid null check instanciate it with fake delegate.
public event ChangeBackColorDelegate ChangeBackColor = delegate { };
public Form1()
{
InitializeComponent();
//instanciate child form for N time.. just to simulate
for (int i = 0; i < 3; i++)
{
var childForm = new ChildForm();
//subscribe parent event
this.ChangeBackColor += childForm.ChangeColor;
//show every form
childForm.Show();
}
}
private void button1_Click(object sender, EventArgs e)
{
ChangeBackColor.Invoke(Color.Black);
}
}
/// <summary>
/// child form class having text box inside
/// </summary>
public class ChildForm : Form
{
private TextBox textBox;
public ChildForm()
{
textBox = new TextBox();
textBox.Width = 200;
this.Controls.Add(textBox);
}
public void ChangeColor(Color color)
{
textBox.BackColor = color;
}
}
}
相關問題
- 1. 如何從子窗體更新MDI父窗體中的控件?
- 2. 更改父窗體中任何控件的屬性
- 3. 如何從子窗體設置父窗體WindowState屬性?
- 4. Delphi從子窗體更新父窗體控件
- 5. C#窗體 - 屬性更改
- 6. 子窗體內的子窗體控件
- 7. WinForms中的父窗體和子窗體用戶控件通信
- 8. 父窗體中的子窗體如何訪問父窗體控件的按鈕單擊
- 9. 從子窗體中更改主窗體按鈕的可見性
- 10. 從子窗體winform修改父窗口的控件C#
- 11. 如何從一個子窗體中更改父窗體中的控件的佈局?
- 12. 如何在MDI父窗體中激活子窗體時禁用父窗體?
- 13. 如何在我的子窗體設計器中編輯父窗體控件
- 14. 關閉子窗體時從父窗體更改LayoutMdi
- 15. C#窗體窗體:Mdi父窗體和子窗體問題
- 16. MDI父窗體面板控件添加子窗體
- 17. vb.net子窗體落在父窗體內面板控件後面
- 18. MdiParent屬性的子窗體
- 19. 的WinForms:子窗體關閉父窗體
- 20. Rails的:子窗體在父窗體
- 21. 如何用子窗體更改mdiparent窗體的背景圖片?
- 22. 如何從Windows Forms 2.0中的子窗體關閉父窗體?
- 23. 如何從C#中的子窗體調用父窗體方法?
- 24. 如何在父窗體的中心設置子窗體?
- 25. 如何覆蓋子窗體中的父窗體映射?
- 26. 從子窗體更改父窗體中的屬性的正確方法是什麼?
- 27. 在ms訪問中設置子窗體的父窗體的文本框的控件源屬性?
- 28. 從子窗體關閉父窗體
- 29. 引用父窗體到子窗體
- 30. 引用父窗體從子窗體
使所有的文本框的子窗體,並通過調用父子窗體訪問公開。 – Irshad
我應該單獨調用每個文本框? – Behnam
用子表單編寫方法並調用它。那麼不需要爲文本框設置「public」修飾符。 – Irshad