PDA

View Full Version : مشکل دسترسی و ایجاد رویداد برای فرم در کامپوننت non visual



M.Hashemi2007
دوشنبه 17 خرداد 1395, 10:55 صبح
با سلام
من می خواستم یک کامپوننت non visual در windows application بنویسم.
اول یک کلاس به پروژه ازافه کردم که از component ارث بری می کرد.
اما هرکار کردم که بتونه owner یا همان parent خودش را بشناسه نتونستم، تا این که مقاله زیر را پیدا کردم و تونستم به فرم دسترسی پیدا کنم.


https://www.wiredprairie.us/journal/2004/05/finding_the_component_containe.html

حالا برای فرم پروپرتی ها را می تونم تغیر بدم اما زمانی که یک رویداد می خواهم براش تعریف کنم در اجرا هیچ اتفاقی نمی افتد.
یعنی مثلا در کد زیر رویداد را در کلاس تعریف می کنم :


public class Class1 : System.ComponentModel.Component, ISupportInitialize
{
private Form _parentForm;
public Form ParentForm
{
get { return _parentForm; }
set { _parentForm = value; }
}

Etc....

#region ISupportInitialize
public void BeginInit() { }
public void EndInit()
{
setUpParentForm();
}

private void setUpParentForm()
{
if (_parentForm != null) return; do nothing if it is set
IDesignerHost host;
if (Site != null)
{
host = Site.GetService(typeof(IDesignerHost)) as IDesignerHost;
if (host != null)
{
if (host.RootComponent is Form)
{
_parentForm = (Form)host.RootComponent;
_parentForm.Click += _parentForm_Click;
}
}
}

private void _parentForm_Click(object sender, EventArgs e)
{
MessageBox.Show("test!");
}

رویداد تعریف شده برای فرم اصلی اما کار نمی کند یعنی زمانی روی فرم کلیک می کنم هیچ پیامی داده نمی شود.
---
آیا کلا راه را اشتباه رفتم؟
آیا راه حل دیگری دارد؟
یا ...
از اساتید و دوستان محترم خواهش می کنم در این مورد به من کمک کنند.
با تشکر