قبل ان اتعلم API عندما كنت اريد وضع Button لإظهار CommonDialog معين و وضع اسم الملف الذى تم اختياره داخل TextBox كنت اضع الزر بجوار مربع النص و اضع عنوان للزر عباره عن 3 نقط حتى يعلم المستخدم ان هذا الزر مرتبط بعملية وضع اسم الملف داخل مربع النص الصوره التاليه توضح ما اريد قوله
اذا قمت بإضافة ComboBox و قمت بالكتابه فيه ستلاحظ شيئين هما كما فى الصوره التاليه
تلاحظ فى الصوره ان حجم الـ ComboBox أصغر من المسار و هذا أدى إلى ان المسار تم تحجيمه فى المساحه ما بين الحافه اليسرى للـ ComboBox (رقم 1 فى الصوره) و ما قبل الزر الخاص بالـ ComboBox (رقم 2 فى الصوره).
اذا حاولت ان تقوم بوضع مربع نص على الفورم و قمت بإضافة زر و بعدها قمت بكتابة الكود التالى فى الـ Form_Load
TextBox1.Controls.Add(Button1) Button1.Size = New Size(26, 19) Button1.BackColor = Color.FromKnownColor(KnownColor.ButtonFace) Button1.Dock = DockStyle.Right
على اعتبار ان الزر اسمه Button1 و مربع النص TextBox1 بعد تشغيل البرنامج ستجد ان الزر اصبح داخل مربع النص و موجود بأقصى اليمين، المشكله ستظهر هنا عندما تبدأ فى الكتابه فى مربع النص فعندما يصل مؤشر الكتابه لحافة الزر و قمت بالكتابه ستجد انه يتم الكتابه فما خلف الزر.
طبعا هذا مخالف لما يحدث ما الـ ComboBox و بذلك فوضع الـ TextBox هذا مرفوض نهائيا و هذا يعود بنا للهدف من هذا الدرس حيث انى قد قمت بعمل TextBox و اسميته BrowseTextBox.
هذه الاداه وارثه لـ TextBox و بالإضافه لذلك تقوم بوضع زر امر بداخلها و محاذاته لأقصى اليمين و على خلاف ما كان يحدث مع TextBox1 فهذه الاداه تعالج موضوع المحاذاه و بالتالى مؤشر الكتابه لن يقوم ابدا بالدخول تحت الزر و لكن سيعتبر مربع النص ان الوصول للزر الموجود داخله هو نهاية المطاف و سيبدأ فى تحريك النص بأكمله لليسار و التكمله بشكل طبيعى.
يوجد بالأداه الحدث ButtonClick و الذى يتم تفعيله عند الضغط على الزر الموجود بمربع النص، اما اذا كنت التعامل مع خصائص اخرى للزر او استخدام احداث اخرى فلابد منك من التعامل مع الخاصيه TextButton والتى تعود لك بالزر نفسه.
هذه صوره للمثال المرفق
المثال فى المرفقات
و الله ولى التوفيق
