PDA

View Full Version : پیداکردن محل قرار گرفتن مکان نما یا یک کارکتر در textbox به صورت xوy



sarnev6t
یک شنبه 14 بهمن 1386, 08:49 صبح
پیداکردن محل قرار گرفتن مکان نما یا یک کارکتر در textbox به صورت xوy؟
آیا تابعی وجود داره که این کارو بکنه؟

ARA
یک شنبه 14 بهمن 1386, 10:55 صبح
اندازه یک text رومیتونی بدست بیاری


public System.Drawing.SizeF MeasureString(string text, System.Drawing.Font font)
Member of System.Drawing.Graphics


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

ok

sarnev6t
یک شنبه 14 بهمن 1386, 23:20 عصر
من دقیق متوجه کد نشدم میشه یکم توضیح بدید!

ARA
دوشنبه 15 بهمن 1386, 10:03 صبح
int w, h;
System.Drawing.Graphics g = textBox1.CreateGraphics();
w=g.MeasureString("ARA", this.Font).Width;
h=g.MeasureString("ARA", this.Font).Height;
int x = w + textBox1.Left;
int y = h + textBox1.Top;

sarnev6t
پنج شنبه 18 بهمن 1386, 22:46 عصر
سلام مجدد
این کد خیلی به دردم خورد ولی هنوز مشکل اصلی منو حل نکرده
میخواستم بدونم چطوری میشه محل جاریه مکان نمارو به دست آورد؟

sarnev6t
جمعه 19 بهمن 1386, 21:16 عصر
از دوستان کسی نمی تونه این مشکلو حل بکنه!
سوالمو اینجوری می پرسم :
فکر کنید میخواهید با وقوع رویدادی در محل فعلی مکان نما چیزی به نمایش در بیاد(مثل عکس)
حالا چطوری باید آدرس مکان نمارو بدست بیاریم تا برای نمایش عکس از این آدرس استفاده کنیم؟

sarnev6t
شنبه 20 بهمن 1386, 13:41 عصر
:عصبانی++::عصبانی++:از دوستان کسی نیست جواب این سوال را بدونه؟
اگه واقعا راهی وجود نداره من فکر دیگه ای بکنم!:اشتباه:

Aidin
شنبه 20 بهمن 1386, 13:51 عصر
اگر نیازتون رو واضح تر توضیح بدید ، بهتر میشه کمکتون کرد .

sarnev6t
شنبه 20 بهمن 1386, 14:07 عصر
حتما
فرض کنید قرار باشه تو محل قرار گیری مکان نما توی textbox یک عکس به نمایش در بیاد حالا ما محل قرار گرفتن مکان نمارو نمی دونیم یعنی این کاربره که جای اونو عوض میکنه یک موقع اول text box یه موقع آخرشه!
من میخوام محل مکان نمارو بر حسب پیکسل به دست بیارم(مثلا تو رویداد key press)

Aidin
شنبه 20 بهمن 1386, 14:57 عصر
منظورت مکان نمای موس هست یا کیبورد ؟؟؟

sarnev6t
شنبه 20 بهمن 1386, 22:22 عصر
کی بورد !
اصل ماجرا اینه که من میخوام عمیلاتpasteتو ی ورد را شبیه سازی کنم یعنی:

1-محتویاتpasteشده به محل مکان نما(کی بورد) اضافه بشه

2- بعد از عملیاتpaste توی اون محل عکسی به نمایش در بیادکه نمایشگر محتوایpaste شده باشه

ARA
یک شنبه 21 بهمن 1386, 09:53 صبح
اگه TextBox یک خطی باشه
textBox1.SelectionStart میتونه بهت کمک کنه ولی اگه جند خطی باشه فکر کنم باید تمام Enter ها رو بشماری و بتعداد اون به اندازه Font پایین بری

sarnev6t
یک شنبه 21 بهمن 1386, 21:14 عصر
مشکل همینه ! مکان نما همیشه آخر خط نیست ممکن وسط باشه یا اول!!
یعنی چیزی وجود نداره به ما بگه الان مکان نما (کی بورد ) کجای textbox ما قرار داره؟
عجیبه نه؟

ARA
دوشنبه 22 بهمن 1386, 01:01 صبح
دوست عزیز انگار توجه نکردی زمونی که وسط خطه میتونی اینجوری بدست بیاری


privatevoid textBox1_MouseMove(object sender, MouseEventArgs e)
{
float w, h;
string text = textBox1.Text.Substring(0, textBox1.SelectionStart);
System.Drawing.Graphics g = textBox1.CreateGraphics();
w = g.MeasureString(text, this.Font).Width;
h = g.MeasureString(text, this.Font).Height;
float x = w + textBox1.Left;
float y = h + textBox1.Top;
this.Text = x.ToString() + " " + y.ToString();
}

sarnev6t
دوشنبه 22 بهمن 1386, 13:54 عصر
مرسی از لطفت این که نوشتی با اون اولی یکم فرق میکنه!!
ولی فکر کنم مشکل منو حل کنه
در هر صورت متشکر!

sarnev6t
دوشنبه 22 بهمن 1386, 22:39 عصر
ببخشید دوباره یک مشکل دارم:
وقتی طول متن زیاد میشه این عدد کم کم از محل آخرین کارکتر بیشتر میشه علتش چیه؟
یک سوال دیگه

float x = w + textBox1.Left;
float y = h + textBox1.Top;
نقش این بخش کدتون چیه؟

ARA
سه شنبه 23 بهمن 1386, 10:09 صبح
اولی رو نمیدونم والله

دومی location اون نقطه در textbox رو + location texbox در فرم میکنه

sds1920
پنج شنبه 11 تیر 1388, 17:39 عصر
ببین.من یک کد نوشتم که کاری رو که شما می خواستی انجام می ده.یعنی x و y کرسر توی textbox رو بهت می ده.
Point CurrentCrusor = textBox1.GetPositionFromCharIndex(textBox1.Text.Le ngth - 1);
CurrentCrusor.X += textBox1.Location.X ;
CurrentCrusor.Y += textBox1.Location.Y ;
int x = CurrentCrusor.X;
int y = CurrentCrusor.Y;
امیدوارم کارتون رو راه بندازه.البته این کد را با c# 2008 نوشتم.تضمین نمی کنم تون ورژن های پایین تر جواب بده.