テーマチェンジャーをGUIにコーディングしようとしていますが、うまく機能しません。私が知っていることはすべて試しました。MainUIとThemesの2つのフォームがあり、テーマフォームの下のボタンを押しようとすると、MainUiライブでコードが起動します。ライブで意味するのは、直接発生するため、テーマを閉じる必要がないということです。例として有効にするためです。。
テーマのメインUIのコードは次のとおりです。
private void button7_Click(object sender, EventArgs e)
{
bool Isopen = false;
foreach(Form f in Application.OpenForms)
{
if (f.Text == "Themes")
{
Isopen = true;
f.BringToFront();
break;
}
}
if (Isopen == false)
{
Themes theme = new Themes();
theme.Show();
}
}
public void FireEvent()
{ //Example
BackColor = Color.FromArgb(255, 255, 255);
}
テーマ:
private void button4_Click(object sender, EventArgs e)
{
MainUI main = new MainUI();
main.FireEvent();
}
MainUI
テーマが選択されるたびに新しいインスタンスを作成しているためFireEvent
、フォームの間違ったインスタンスを呼び出します。Themes
フォームへの参照を渡す必要があります。たとえば、MainUI
インスタンスを受け取るコンストラクターを作成します。
class Themes : Form
{
private readonly MainUI _main;
public Themes(MainUI main) : this()
{
_main = main;
}
private void button4_Click(object sender, EventArgs e)
{
_main.FireEvent();
}
}
メインUIで、次のコードを使用します。
private Themes _theme;
private void button7_Click(object sender, EventArgs e)
{
if(_theme == null)
_theme = new Themes(this);
_theme.Show();
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加