Я столкнулся со странной проблемой, я запустил отдельный процесс на основе Win Form с помощью Process.Start из другого процесса.
Этот процесс только что отправил объект, который на самом деле содержит элементы управления .NET (например, кнопку, текстовое поле, метку, переключатель и т. Д.) В качестве информации (управляющей информации, которую я только что собрал из добавления других запущенных управляемых процессов). После отправки мне нужно нарисовать эти элементы управления в этом процессе, используя WinForm в качестве основного окна (в качестве процесса на основе формы).
НО ЭТИ ОРГАНЫ УПРАВЛЕНИЯ НЕ ОТНОСЯТСЯ К ОСНОВНОМУ ФОРМУ. Основная проблема связана с информацией родительского контроля, которая мне не подходит.
Взгляните на код
public partial class TestController: Form, IApplicationEventsSink
{
static bool m_ControllerLoadedFirstTime = true;
ITestControl m_TakoControlHandler = null;
public Controller()
{
if (m_ControllerLoadedFirstTime == true)
{
MessageBox.Show("TAKOController called first time");
InitializeComponent();
m_ControllerLoadedFirstTime = false;
}
else
MessageBox.Show("TAKOController called second time");
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Form1_Load");
initEnvironment();
bool bSubscriptionCreated = createSubscription();
if (bSubscriptionCreated == false)
throw new Exception(String.Format("Controller failed to create subscription with Simulator process!!"));
}
public ITestControl CreateControl(CustomControl a_CustomControl)
{
ITestControl TakoControlHandler = Factory.CreateControl(a_CustomControl);
m_TakoControlHandler = TakoControlHandler;
return TakoControlHandler;
}
private void SetProperties(CustomControl a_CustomControl)
{
m_TakoControlHandler.setPropeties(a_CustomControl);
}
public void OnProcess(CustomControl a_CustomControl)
{
MessageBox.Show("OnProcess");
ITestControl TakoHandler = CreateControl(a_CustomControl);
if (TakoHandler != null)
{
SetProperties(a_CustomControl);
m_TakoControlHandler.SetParentHandle(base.Handle);
}
base.Refresh();
base.Update();
base.Show();
}
}
while Контроль, который мне нужно визуализировать после его создания.
public class TestButton : Button
{
Control m_Control;
public TestButton()
{
m_Control = new Button();
}
public void SetParentHandle(IntPtr a_ControlHandle)
{
Control ParentControl = Control.FromHandle(a_ContainerHandle);
this.m_Control.Parent = ParentControl;
}
}
У какого-нибудь тела есть идея? Я был бы очень признателен.
С уважением
Усман