ورود

View Full Version : سوال: دسترسی به ابجکت هایی که runtime ایجاد شده اند



mostafab2m
سه شنبه 18 فروردین 1394, 09:32 صبح
عرض سلام دارم خدمت دوستان عزیز
میخوام به پروپرتی ابجکت هایی که در زمان اجرا تولید شدند دسترسی داشته باشم
مثال : یه مربع در زمان اجرا تولید میکنم میخوام وقتی روی اون مربع راست کلیک میکنم تو یه لیبل رنگ ، سایز ، نام و .. اون رو نشون بده
در حال حاظر فقط میتونم شی رو حذف کنم




private void canvasArea_click(object sender, MouseButtonEventArgs e) {
Shape Rendershape = null;
Rendershape = new Rectangle() { Fill = Brushes.Blue, Height = 45, Width = 45, RadiusX = 12, RadiusY = 12 }; }
canvasArea.Children.Add(Rendershape); }

private void canvasArea_RightClick(object sender, MouseButtonEventArgs e)
{
Point pt = e.GetPosition((Canvas)sender);
HitTestResult result = VisualTreeHelper.HitTest(canvasArea, pt);

canvasArea.Children.Remove(result.VisualHit as Shape); }

SabaSabouhi
سه شنبه 18 فروردین 1394, 10:59 صبح
عرض سلام دارم خدمت دوستان عزیز
میخوام به پروپرتی ابجکت هایی که در زمان اجرا تولید شدند دسترسی داشته باشم
مثال : یه مربع در زمان اجرا تولید میکنم میخوام وقتی روی اون مربع راست کلیک میکنم تو یه لیبل رنگ ، سایز ، نام و .. اون رو نشون بده
در حال حاظر فقط میتونم شی رو حذف کنم




private void canvasArea_click(object sender, MouseButtonEventArgs e) {
Shape Rendershape = null;
Rendershape = new Rectangle() { Fill = Brushes.Blue, Height = 45, Width = 45, RadiusX = 12, RadiusY = 12 }; }
canvasArea.Children.Add(Rendershape); }

private void canvasArea_RightClick(object sender, MouseButtonEventArgs e)
{
Point pt = e.GetPosition((Canvas)sender);
HitTestResult result = VisualTreeHelper.HitTest(canvasArea, pt);

canvasArea.Children.Remove(result.VisualHit as Shape); }



سلام
شما باید از eventها استفاده کنی، یا شی شما مثلاً رویداد click رو داره که کافیه event-handler مناسبش رو بنویسی و بهش متصل کنی
و یا این که نداره، که باید براش یک container بگذاری که داشته باشه.
و البته تولید یک کنترل شخصی ( Custom Control ) قطعاً راه حل به‌تریه اما یه کم تخصصی می‌شه.

صبا صبوحی

mostafab2m
سه شنبه 18 فروردین 1394, 14:34 عصر
این کد رو واسه نمونه گذاشتم تو کد اصلی به جای اون شیپ ها یک سری یوزر کنترل دا رم که با کلیک کردن رو فرم ایجاد میشن
میخوام بعد از ایجاد کردن بتونم به پروپرتی هاش دسترسی داشته باشم
مثلا بتونم سایزش رو بدست بیارم و تغییر بدم
اگه بتونین نمونه کد واسم بزارین ممنون میشم

Mori Bone
سه شنبه 18 فروردین 1394, 21:49 عصر
public partial class MainWindow : Window
{
Rectangle rect1;

public MainWindow()
{
InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
rect1 = new Rectangle();
rect1.Width = rect1.Height = 100;
rect1.Fill = Brushes.Red;
rect1.MouseDown += rect1_MouseDown;
layRect.Children.Add(rect1);
}

void rect1_MouseDown(object sender, MouseButtonEventArgs e)
{
Rectangle index = sender as Rectangle;

index.Visibility = System.Windows.Visibility.Hidden;
}
}

mostafab2m
سه شنبه 18 فروردین 1394, 22:30 عصر
Mori Bone (http://barnamenevis.org/member.php?289901-Mori-Bone)

سلام میشه یه راهنمایی بکنی دو خط آخر چیکار میکنه
من اجراش میکنم خطای زمان اجرا میده
Object reference not set to an instance of an object.

مرسی متوجه کارکردش شدم و دقیقا چیزی بود که میخواستم
متشکر