簡體   English   中英

C#:嘗試更改用戶控件文本框和背景色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM