PDA

View Full Version : سوال: ارسال مکان نما به ابتدای خط تکست باکسی که برای ثبت نام استفاده شده



kamran_14
دوشنبه 16 شهریور 1394, 19:53 عصر
سلام
من یک کامپوننت که از تکست باکس مشتق شده ایجاد کردم
این کامپوننت به این صورت عمل میکنه که وقتی تکست باکس ها خالیه داخلش با رنگ کم رنگ نوشته میشه مثلا "نام کاربری" یا اگه برای پسورد باشه نوشته میشه "پسورد"
همان محتویات برچسب به جای اینکه در لیبل نوشته بشه در داخل تکست باکس به رنگ طوسی کم رنگ نوشته می شه دقیقا مثل login اینجا
ولی من میخوام با کلیک داخل تکست باکس این نوشته ها پاک نشه و مکان نما به ابتدای نوشته ارسال بشه و با فشار کلید از صفحه کلید این نوشته ها پاک بشه
من برای این کار رویداد enter را override کردم
اما من وقتی داخل تکست باکس کلیک میکنم مکان نما به ابتدای نوشته نمی ره بلکه به هر جا که کلیک میکنم میره

protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
if (Text == MessageInput)
{
SendKeys.Send("{HOME}");
}
}

pbm_soy
دوشنبه 16 شهریور 1394, 22:19 عصر
بد نیست این دستور را در رخداد gotfocus هم امتحان کنید
ویا اینکه از خصوصیات مربوط به انتخاب متن در تکست باکس استفاده کنید مثلا
Selectionstart. برای مشخص کردن محل یا کاراکتر د آغازی برای انتخاب متن ویا انتخاب متن را از چندمین کاراکتر شروع میکنید
Selectiolength مشخص کننده طول ناحیه انتخاب شده یا قرار است چند کاراکتر را انتخاب کنید
البته شاید اسامی خصوصیتها را اشتباه نوشته باشم درست یادم نیست ویا با زبانهای دیگه قاطی نکرده باشم ولی خصوصیات در سی شارپ هم تو همین مایه هاست

حالا چگونه مکانما را حرکت دهیم؟ selctionstart را برابر محلی که میخواهید مکانما برود کنید و مقدار selctionlength را نیز برابر صفر کنید
برای بردن به ابتدای متن selectionstart را برابر صفر یا یک کنید و مقدار selectionlength را برابر صفر کنید
برای بردن به انتهای متن selectionstart را برابر textbox1.text.length منهای یک کنید و selectiolength را صفر کنید

البته برای اینکار از caretindex هم اینکار را انجام دهید

دلتنگ اسمان
سه شنبه 17 شهریور 1394, 06:55 صبح
با سلام
با این کد هم میتونید مکان نما را به ابتدای نوشته منتقل کنی :

textBox1.Select(0, 0);