[英]C# : Trying to change a usercontrol textbox and background color
我的問題很簡單。 我想單擊Form1中的面板,這將導致放置在form2上的userControl1中的label1更改為“文本”。
單擊此面板還將更改所述userControl1的背景顏色。 我收到錯誤“'TileInterFaceTest.Usercontrol1.label1',由於其保護級別”,這使我感到困惑。
即使單獨運行換色代碼,也無法達到預期效果。
需要明確的是,對於C#和一般編程,我還是一個新手。 到目前為止,我一直在使用Visual Basic,因此類,方法和對象的概念對我來說有些混亂。
這是我的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TileInterFaceTest
{
public partial class Form1 : Form
{
public UserControl1 userControl1 = new UserControl1();
public Form2 form2 = new Form2();
public Form1()
{
InitializeComponent();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void panel1_DoubleClick(object sender, EventArgs e)
{
}
private void panel1_Click(object sender, EventArgs e)
{
form2.Show();
userControl1.BackColor = System.Drawing.Color.Red;
userControl1.label1 = "Text";
}
}
}
首先,您顯示的代碼甚至不會在第一種形式上顯示用戶控件! 這可能就是為什么您的顏色更改代碼未按預期執行的原因。 簡單地寫:
public UserControl1 userControl1 = new UserControl1();
只需聲明一個公共字段(錯誤的樣式!)並將其設置為用戶控件的新實例即可。 它不會將其放在呈現的UI上 。
要修復該部分,您需要將其添加到表單中的某個位置。 在構造函數或Loaded
事件中說...:
Controls.Add(userControl1);
還要注意,這會將它放在Form1
。 如果要在Form2
它,則該窗體需要創建控件並將其添加到其Controls
集合中,並將其公開為屬性(請參見下文)。 另一個問題在這里:
userControl1.label1 = "Text";
大概label1
是該用戶控件上的標簽控件。 首先,控件是用戶控件的私有成員,您不能只從其他地方訪問它們而不先暴露它們! 您需要在用戶控件中添加以下內容:
public Label Label1 { get { return label1; } }
注意使用屬性(正確的樣式!)。 現在,您可以編寫以下代碼:
userControl1.Label1.Text = "Text";
注意,我修復了該行中的最后一個錯誤,因為您不能將Label
對象設置為字符串,但這沒有任何意義。 您需要改為修改其Text
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.