Я пробовал разные решения, но мне не повезло ... Я не знаю, как с этим справиться. Следующая проблема:Изменить значение из в родительской форме из формы ребенка
У меня есть основная форма (Form1) и дочерняя форма (splashScreen).
Код в моем SplashScreen:
public splashScreen()
{
InitializeComponent();
}
public splashScreen(Form1 frm1)
{
form1 = frm1;
InitializeComponent();
}
private static splashScreen m_instance = null;
private static object m_instanceLock = new object();
public static splashScreen GetInstance()
{
lock (m_instanceLock)
{
if (m_instance == null)
{
m_instance = new splashScreen();
}
}
return m_instance;
}
В моей Form1 я создаю новый поток и начать свой SplashScreen. Как я звоню контроль в моей SplashScreen заключается в следующем:
splashScreen splashObj = splashScreen.GetInstance();
if (splashObj.InvokeRequired)
{
splashObj.Invoke((MethodInvoker)delegate()
{
splashObj.Show();
}
);
}
else
{
splashObj.Show();
}
Теперь SplashScreen запускается, когда мой Form1 работает и показывает текущий процесс. На экране splashScreen у меня есть кнопка «Отмена». Когда я нажимаю на эту кнопку, я хочу изменить переменную «killProc» - которая находится в моем Form1- «true», так что работа в Form1 может быть остановлена с помощью оператора return, когда в какой-то момент «if (killProc)» возвращается правда.
Как изменить переменную в моем Form1 через мой splashScreen или есть лучший способ?
Я получаю ошибки при создании экземпляров в моей Form1. splashScreen splashObj = splashScreen.GetInstance (Form1 frm1); –
Хорошо, я попробовал splashScreen splashObj = splashScreen.GetInstance (this); Теперь он отлично работает! Большое спасибо! –