ورود

View Full Version : مبتدی: تخصيص مختصات جديد به يك شئ در Window در محيط كدنويسي VB در wpf



mgh64120
سه شنبه 01 مرداد 1392, 23:58 عصر
سلام دوستان. خسته نباشيد...
من ميخوام مختصات يك شئ مثلا يه Grid (نه DataGrid) رو در Window و از طريق محيط كدنويسي VB نه با xaml عوض كنم. از طريق كدام Property ؟؟؟
باتشكر... :خجالت:
بدرود.

mgh64120
جمعه 04 مرداد 1392, 12:07 عصر
سلام.
بزاريد سوال رو به شكل ديگه اي مطرح كنم...
من ميخوام با كليك بر روي يه Button موقعيت مكاني يك Textbox تغيير كنه. مثلا فاصله اون از چپ به مقدار 10 واحد اضافه شود؟؟؟
ممنون از توجه شما.
بدرود...

nemi1368
شنبه 05 مرداد 1392, 01:13 صبح
سلام دوست عزیز

برای این کار اول باید کنترل مورد نظرت رو (در اینجا TextBbox) داخل یه Canvas بذاری در کد XAML ، به صورت زیر
<Canvas >
<TextBox Height="23" HorizontalAlignment="Left" Margin="83,39,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Canvas.Left="-77" Canvas.Top="-33" />
</Canvas>
میتونی همه کنترل ها رو داخل Canvas بذاری که کار راحت تر باشه برات
حالا داخل رویداد Click دکمه خودت مثل کدهای زیر رو بنویس (مقادیر دلخواه هستن)


int TransX = 50;
int TransY = 30;
GeneralTransform myTranse = this.textBox1.TransformToAncestor(this);
Point p1 = myTranse.Transform(new Point(0,0));

this.textBox1.SetValue(Canvas.LeftProperty, p1.X + TransX);
this.textBox1.SetValue(Canvas.RightProperty,p1.Y+T ransY);

ببخشید که کد VB نذاشتم (VB کار نیستم متاسفانه ولی شما معادل این کد ها رو سعی کنید که بگذارید ، شبیه همین هاست)

امیدوارم کمکی کرده باشم

mgh64120
یک شنبه 06 مرداد 1392, 10:20 صبح
با تشكر فراوان از شما دوست گرامي nemi1368
من ميخوام همين كار رو به جاي Cavas با Grid انجام بدم كه كنترل هام داخلشه. اما در ليست خصوصيات متد SetValue گريد، LeftProperty وجود نداره.
.Please Help me
خيلي ممنون از توجه شما !!!
بدرود.

mgh64120
پنج شنبه 10 مرداد 1392, 10:15 صبح
سلام دوست عزيز. ممنون از توجه شما...
در قطعه كدي كه در رويداد كليك قرار داديد، اگر X رو صفر هم قرار بديم، باز هم TextBox به اندازه پهناي خودش جابجا ميشود. چرا؟؟؟
ممنون...

nemi1368
پنج شنبه 10 مرداد 1392, 13:14 عصر
این برای خودم هم سوال بود ولی حقیقتش نمیدونم شیوه عمل این کد دقیقا چجوریه که حتی با مقدار صفر هم حرکت میکنه ، با گرید تا حالا همچین کاری نکردم و نمیدونم چطوری میشه. اما برای اینکه بخواین تکست باکس برعکس حرکت کنه یا باید اون متغیر transX رو مقدار منفی بهش بدین یا تو قسمت پایینی کد به جای + یه - قرار بدین. با عدد 95- کلا تکون نمیخوره ولی با اعداد کوچکتر از اون برعکس حرکت میکنه (مثل 100-).

ببخشید اگه جواب کاملی هم برای سوالتون نداشتم (در حد وسع جواب دادم)

mgh64120
شنبه 12 مرداد 1392, 00:59 صبح
سلام دوست عزيز nemi1368. ممنون از توجه شما...
مشكل حل شد. اين هم كد البته به زبان VB :


Dim X As Integer = 20
Dim P As Double = Canvas.GetLeft(textBox1)
textBox1.SetValue(Canvas.LeftProperty, P + X)


با تشكر. بدرود...

nemi1368
شنبه 12 مرداد 1392, 11:34 صبح
mgh64120 (http://barnamenevis.org/member.php?41719-mgh64120) عزیز

خوشحالم که مشکلتون حل شد ، امیدوارم که تونسته باشم کمکی هرچند ناچیز کرده باشم