1 つのフォーム (FormMain) と 3 つのユーザー コントロール (TitleScreen、MainScreen、および InGameMenu) が異なる画面として機能する Windows フォーム プロジェクトがあります。MainScreen に含まれているのは Label、lblDate であり、その Text プロパティはプロジェクトの他の場所 (TitleScreen および InGameMenu) で変更する必要がありますが、静的にすることができないため、それにアクセスするための静的パブリック プロパティを作成できません。イベントは仕事を成し遂げるかもしれないと聞きましたが、どうすればいいのかわかりません。lblDate.Text を別のクラスから変更する方法を教えてください。この時点でそれがどのように行われるかは気にしません。これは私を夢中にさせています。
ScreenReferenceHolder.cs 内
class ScreenReferenceHolder
{
#region Field Region
private static FormMain formMain;
private static UserControls.TitleScreen titleScreen;
private static UserControls.MainScreen mainScreen;
private static UserControls.InGameMenu inGameMenu;
#endregion
#region Property Region
public static FormMain FormMain
{
get
{
if (formMain == null)
formMain = new FormMain();
return formMain;
}
}
public static UserControls.TitleScreen TitleScreen
{
get
{
if (titleScreen == null)
titleScreen = new UserControls.TitleScreen();
return titleScreen;
}
}
public static UserControls.MainScreen MainScreen
{
get
{
if (mainScreen == null)
mainScreen = new UserControls.MainScreen();
return mainScreen;
}
}
public static UserControls.InGameMenu InGameMenu
{
get
{
if (inGameMenu == null)
inGameMenu = new UserControls.InGameMenu();
return inGameMenu;
}
}
Program.cs で
Application.Run(ScreenReferenceHolder.FormMain);
FormMain.cs で
public FormMain()
{
InitializeComponent();
this.Controls.Add(ScreenReferenceHolder.TitleScreen);
this.Controls.Add(ScreenReferenceHolder.MainScreen);
this.Controls.Add(ScreenReferenceHolder.InGameMenu);
ScreenReferenceHolder.MainScreen.Visible = false;
ScreenReferenceHolder.InGameMenu.Visible = false;
}
#endregion
これを MainScreen.cs に入れてみましたが、何もアクセスできません。
public string LabelDate
{
get { return lblDate.Text; }
set { lblDate.Text = value; }
}
最後に、MainScreen.Designer.cs にはラベルがあります
private void InitializeComponent()
{
this.lblDate = new System.Windows.Forms.Label();
}
private System.Windows.Forms.Label lblDate;