PDA

View Full Version : سوال: چگونه موقعیت جدید کنترل در برنامه ام پس از درگ و دراپ بدست بیاورم.



sayan
جمعه 12 فروردین 1390, 19:22 عصر
سلام دوستان

کمک فوری

این قسمت برنامه رو اصلاً نمیفهم چیکار باید کنم.

من از قسمت جعبه ابزار سمت راست برنامه کنترلی رو به روی فرم درگ میکنم تا اینجا مشکلی ندارم

ولی حالا میخوام زمانی که کنترل بر روی فرم درگ و دراپ میشه موقعیت جدیدش بهم MessageBox کنه .

این برنامه به زبان 2010 میباشد.

با تشکر از شما.

exlord
جمعه 12 فروردین 1390, 20:48 عصر
توی private void Initialize()
form.ControlAdded += new ControlEventHandler(form_ControlAdded);
void form_ControlAdded(object sender, ControlEventArgs e)
{
e.Control.LocationChanged += new EventHandler(Control_LocationChanged);
}

void Control_LocationChanged(object sender, EventArgs e)
{
MessageBox.Show((sender as Control).Location.ToString());
}

sayan
شنبه 13 فروردین 1390, 08:56 صبح
سلام
خیلی ممنون آقای exlord مشکلم حل شد.:تشویق::تشویق::تشویق:

شما برای این موارد زیر نیز راه حلی دارید:

1- وقتی که کنترل به روی فرم درگ شده و من در برنامه اصلیم توسط 2 تا TextBox به اون کنترلی که انتخاب شده باشه Location جدید میدم کنترل به جای جدید نقل مکان میکنه ولی جاش توی مختصات

قبلی میمونه وقتی که یکبار روی فرم کلیک میکنم درست میشه هر متددی استفاده کردم (مثل form.Refresh() و ...) درست نشد.

2- چیکار کنم که با فشردن یک دکمه Button کنترل TabControl ام از لیست جعبه ابزارم انتخاب بشه و بر روی فرم قرار بگیره

با تشکر

exlord
شنبه 13 فروردین 1390, 10:32 صبح
1 - چرا از همون ProperyGrid برای تغییر موقعیت استفاده نمیکین ؟

Point oldLocation;
private void button1_Click(object sender, EventArgs e)
{
oldLocation = btn1.Location;
btn1.Location = new Point(100, 100);
}

void Control_LocationChanged(object sender, EventArgs e)
{
(host as DesignerHost).OnComponentChanged(sender, TypeDescriptor.GetProperties(sender).Find("Location", false), oldLocation, (sender as Control).Location);
}

2 - جواب اینو قبلا دادم (http://barnamenevis.org/showthread.php?280507-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-%D8%A7%DB%8C%D9%86-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-TabControl-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%DA%A9%D8%AF-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%D9%85&p=1238851&highlight=#post1238851)

sayan
شنبه 13 فروردین 1390, 17:06 عصر
خیلی ممنون .

از propety Grid استفاده کردم ولی خودم یک Property ساختم با فیلدهای کمتر .
خواستم PropertyGrid خودم به جای اون PropertyGrid بذارم درست کار نکرد. یعنی کار میکنه ولی Prperties هر کنترل جدا نگه نمیداره و همه رو یکی نشون میده.
با این قسمتش خیلی سر و کله زدم:گیج: ولی سر در نیاوردم و نتونستم

exlord
شنبه 13 فروردین 1390, 19:32 عصر
خیلی ممنون .

از propety Grid استفاده کردم ولی خودم یک Property ساختم با فیلدهای کمتر .
خواستم PropertyGrid خودم به جای اون PropertyGrid بذارم درست کار نکرد. یعنی کار میکنه ولی Prperties هر کنترل جدا نگه نمیداره و همه رو یکی نشون میده.
با این قسمتش خیلی سر و کله زدم:گیج: ولی سر در نیاوردم و نتونستم

PropertGrid رو میتونین فیلتر کنین تا فقط اون پراپرتی هایی رو که میخواین نشون بده ...
MyControl c = new MyControl();
AttributeCollection attributes = TypeDescriptor.GetAttributes(c);

Attribute ct = new CategoryAttribute("MyCat");
g.BrowsableAttributes = new AttributeCollection(new Attribute[] { ct });
g.SelectedObject = c;

sayan
شنبه 13 فروردین 1390, 20:21 عصر
استاد عزیز از راهنمایی هایی که انجام دادین خیلی تشکر میکنم .

خیلی از مشکلاتی که داشتم توسط شما حل شد.:تشویق::تشویق:

امیدوارم که دیگه به مشکل بر نخورم:چشمک::چشمک: