<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: ASP.NET</title><link>https://academy.hsoub.com/programming/c-sharp/dotnet/aspnet/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: ASP.NET</description><language>ar</language><item><title>ASP.NET: &#x631;&#x641;&#x639; &#x627;&#x644;&#x645;&#x644;&#x641;&#x627;&#x62A; &#x625;&#x644;&#x649; &#x627;&#x644;&#x645;&#x648;&#x642;&#x639;</title><link>https://academy.hsoub.com/programming/c-sharp/dotnet/aspnet/aspnet-%D8%B1%D9%81%D8%B9-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%85%D9%88%D9%82%D8%B9-r138/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2017_06/asp_net.4.png.b9aa1f72adb81d37457e4b82f1438d60.png" /></p>

<p dir="rtl">
	في الدروس السابقة قمنا بدراسة الأدوات القياسية والتي لابد من استخدامها في معظم تطبيقات ASP.Net، سنتناول في الدروس القادمة أدوات تحكم أكثر تخصصا وتعرف مجموعة الأدوات هذه باسم Rich controls.
</p>

<p dir="rtl">
	في هذا الدرس ستتعلم كيف تسمح للمتصفحين بأن يرفعوا ملفاتهم على الموقع، كأن يقوموا مثلا برفع صور، ملفات فيديو ... إلخ.
</p>

<h2 dir="rtl">
	رفع الملفات إلى الموقع
</h2>

<p dir="rtl">
	نستخدم أداة التحكم <span style="font-family:courier new,courier,monospace;">FileUpload</span> لرفع الملفات إلى الموقع، ونقوم بتحديد المكان الذي سيتم تخزين ملفات المستخدمين فيه، إما مجلد داخل الموقع أو ضمن قاعدة بيانات الموقع وسنستعرض كلا الحالتين.
</p>

<h3 dir="rtl">
	خصائص أداة التحكم <span style="font-family:courier new,courier,monospace;">FileUpload</span>
</h3>

<ul dir="rtl">
<li>
		<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
	</li>
	<li>
		<strong>FileBytes</strong>: للحصول على محتويات الملف كمصفوفة بايتات.
	</li>
	<li>
		<strong>FileContent</strong>: للحصول على محتويات الملف كمجرى stream.
	</li>
	<li>
		<strong>FileName</strong>: الحصول على اسم الملف.
	</li>
	<li>
		<strong>HasFile</strong>: تعيد True عندما يتم رفع الملف.
	</li>
	<li>
		<strong>PostedFile</strong>: تعيد الملف المرفوع مغلف بغرض من الصف <span style="font-family:courier new,courier,monospace;">HttpPostedFile</span>.
	</li>
</ul>
<p dir="rtl">
	كما أن أداة التحكم <span style="font-family:courier new,courier,monospace;">FileUpload</span> تدعم الطرائق التالية:
</p>

<ul dir="rtl">
<li>
		<strong>Focus</strong>: تسمح بوضع التركيز على هذه الأداة.
	</li>
	<li>
		<strong>SaveAs</strong>: تقوم بتخزين الملف (المراد رفعه) على الموقع.
	</li>
</ul>
<p dir="rtl">
	تقوم الخاصية <span style="font-family:courier new,courier,monospace;">PostedFile</span> بتغليف الملف المرفوع بغرض <span style="font-family:courier new,courier,monospace;">HttpPostedFile</span>، هذا الأمر يسمح بالحصول على معلومات إضافية حول الملف.
</p>

<h3 dir="rtl">
	خصائص الصف <span style="font-family:georgia,serif;">HttpPostedFile</span>
</h3>

<ul dir="rtl">
<li>
		<strong>ContentLenght</strong>: لمعرفة حجم الملف بالبايتات.
	</li>
	<li>
		<strong>ContentType</strong>: لمعرفة نوع الملف ( اللاحقة).
	</li>
	<li>
		<strong>FileName</strong>: لمعرفة اسم الملف.
	</li>
	<li>
		<strong>InputStream</strong>: الحصول على الملف كمجرى stream.
	</li>
</ul>
<p dir="rtl">
	كما أن الصف <span style="font-family:courier new,courier,monospace;">HttpPostedFile</span> يدعم الطريقة <span style="font-family:courier new,courier,monospace;">SaveAs</span> والتي تقوم بتخزين الملف على الموقع.
</p>

<p dir="rtl">
	لاحظ أن الصف <span style="font-family:courier new,courier,monospace;">HttpPostedFile</span> يقدم بعض الخصائص المتوفرة مسبقا مع أداة التحكم <span style="font-family:courier new,courier,monospace;">FileUpload</span> والتي يمكن التعامل معها دون الحاجة للصف <span style="font-family:courier new,courier,monospace;">HttpPostedFile</span>، على سبيل المثال للحصول على اسم الملف يمكن اتباع أحد الأسلوبين:
</p>

<ul dir="rtl">
<li>
		FileUpload.FileName
	</li>
	<li dir="rtl">
		HttpPostedFile.FileName
	</li>
</ul>
<p dir="rtl">
	كما أن الطريقة <span style="font-family:courier new,courier,monospace;">SaveAs</span> موجودة في الصف <span style="font-family:courier new,courier,monospace;">HttpPostedFile</span> على الرغم من توافرها مع أداة التحكم <span style="font-family:courier new,courier,monospace;">FileUpload</span> بشكل صريح.
</p>

<h3 dir="rtl">
	مثال:
</h3>

<p dir="rtl">
	أنشئ صفحة جديدة وأضف عليها الأدوات <span style="font-family:courier new,courier,monospace;">FileUpload1</span> ،<span style="font-family:courier new,courier,monospace;">Button1</span> ،<span style="font-family:courier new,courier,monospace;">Label1</span>. أنشئ مجلد جديد داخل ملفات الموقع باسم <span style="font-family:courier new,courier,monospace;">uploads</span> لنقوم برفع الملفات إليه، في حدث الضغط على الزر اكتب الكود التالي:
</p>

<div>
	<strong>كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>
</div>

<div>
	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            if (FileUpload1.HasFile)
            {
                string path = "~/uploads/" + FileUpload1.FileName;
                FileUpload1.SaveAs(MapPath(path));
                Label1.Text = "File Uploaded successfuly...";
            }
        }
        catch (Exception ex) { }
    }
</pre>

	<p>
		<strong>كود VB</strong>
	</p>

	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As  
    System.EventArgs) Handles Button1.Click

        If (FileUpload1.HasFile) Then
            Dim filePath As String = "~/uploads/" &amp; FileUpload1.FileName
            FileUpload1.SaveAs(MapPath(filePath))
        End If
    End Sub
</pre>

	<p dir="rtl">
		كود الصفحة يجب أن يكون كالتالي:
	</p>

	<div>
		<strong>كود ASP.net</strong>
	</div>

	<div>
		<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:FileUpload ID="FileUpload1" runat="server" /&gt;
        &lt;br /&gt;
        &lt;asp:Button ID="Button1" runat="server" Text="Upload" 
                    onclick="Button1_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text=""/&gt;
    &lt;/div&gt;
</pre>

		<p dir="rtl">
			نفذ التطبيق السابق وحاول رفع ملف ما ( صورة مثلا)، أغلق التنفيذ. يجب أن يكون الملف قد أضيف للمجلد <span style="font-family:courier new,courier,monospace;">Upload</span>، إن لم تره اضغط على تحديث ملفات الموقع كالتالي:
		</p>

		<div style="text-align: center;">
			<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_08/image00_(1).png.91560eba3663fb244540b5ad038342af.png" data-fileid="3493" rel=""><img alt="image00_(1).thumb.png.03813da3f3bdcb089f" class="ipsImage ipsImage_thumbnailed" data-fileid="3493" src="https://academy.hsoub.com/uploads/monthly_2015_08/image00_(1).thumb.png.03813da3f3bdcb089f39ceef4606642b.png"></a>
		</div>

		<div>
			<p dir="rtl">
				في المثال السابق يستطيع المستخدم أن يرفع أي نوع كان من الملفات، سنقوم في المثال التالي بتحديد الأنماط التي نسمح للمستخدم بأن يقوم برفعها ( فقط بعض أنواع الصور).
			</p>

			<h3 dir="rtl">
				مثال:
			</h3>

			<p dir="rtl">
				أنشئ صفحة جديدة وأضف عليها الأدوات <span style="font-family:courier new,courier,monospace;">FileUpload1</span> ،<span style="font-family:courier new,courier,monospace;">Button1</span> ،<span style="font-family:courier new,courier,monospace;">Label1</span>. أنشئ مجلد جديد داخل ملفات الموقع باسم <span style="font-family:courier new,courier,monospace;">uploads</span> لنقوم برفع الملفات إليه. في حدث الضغط على الزر اكتب الكود التالي:
			</p>

			<div>
				<strong style="line-height: 22.3999996185303px;">كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>

				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            if (FileUpload1.HasFile)
            {
                if (CheckFileType(FileUpload1.FileName))
                {
                    string path = "~/uploads/" + FileUpload1.FileName;
                    FileUpload1.SaveAs(MapPath(path));
                    Label1.Text = "File Uploaded successfuly...";
                }
            }
        }
        catch (Exception ex) { }
    }
</pre>

				<p>
					<strong style="line-height: 22.3999996185303px;">كود VB</strong>
				</p>

				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As 
    System.EventArgs) Handles Button1.Click

        If (FileUpload1.HasFile) Then
            If (CheckFileType(FileUpload1.FileName)) Then
                Dim filePath As String = "~/uploads/" &amp; FileUpload1.FileName
                FileUpload1.SaveAs(MapPath(filePath))
            End If
        End If
    End Sub
</pre>

				<p dir="rtl">
					قم باستدعاء فضاء الأسماء الخاص بالدخل والخرج IO، حيث نضيف الكود التالي أعلى الصفحة:
				</p>

				<div>
					<strong style="line-height: 22.3999996185303px;">كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>
				</div>

				<div>
					<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
using System.IO;
</pre>

					<p>
						<strong style="line-height: 22.3999996185303px;">كود VB</strong>
					</p>

					<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
Imports System.IO
</pre>

					<p dir="rtl">
						أما الدالة <span style="font-family:courier new,courier,monospace;">CheckFileType</span> المسؤولة عن فحص نوع الملف فهي:
					</p>

					<div>
						<strong style="line-height: 22.3999996185303px;">كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>
					</div>

					<div>
						<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    bool CheckFileType(string fileName)
    {
        string ext = Path.GetExtension(fileName);
        switch (ext.ToLower())
        {
            case ".gif":
                return true;
            case ".png":
                return true;
            case ".jpg":
                return true;
            case ".jpeg":
                return true;
            default:
                return false;
        }
    }
</pre>

						<p>
							<strong style="line-height: 22.3999996185303px;">كود VB</strong>
						</p>

						<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Function CheckFileType(ByVal fileName As String) As Boolean
        Dim ext As String = Path.GetExtension(fileName)
        Select Case ext.ToLower()
            Case ".gif"
                Return True
            Case ".png"
                Return True
            Case ".jpg"
                Return True
            Case ".jpeg"
                Return True
            Case Else
                Return False
        End Select
    End Function
</pre>

						<p dir="rtl">
							كود الصفحة السابقة:
						</p>

						<div>
							<strong>كود ASP.net</strong>
						</div>

						<div>
							<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:FileUpload ID="FileUpload1" runat="server" /&gt;
        &lt;br /&gt;
        &lt;asp:Button ID="Button1" runat="server" Text="Upload" 
                    onclick="Button1_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text=""/&gt;
    &lt;/div&gt;
</pre>

							<p dir="rtl">
								نفذ التطبيق السابق وحاول أن ترفع ملف ما مغاير للأنواع المحددة، ستلاحظ عدم رفع الملف، أعد التجربة مع أحد أنواع الصور السابقة لترى قبول عملية الرفع.
							</p>

							<h2 dir="rtl">
								رفع الملفات إلى قاعدة بيانات
							</h2>

							<p>
								حيث نقوم بتخزين الملفات في قاعدة بيانات عوضا عن مجلد عادي، هذا الأسلوب يسبب كبر هائل بحجم قاعدة البيانات وبالتالي صعوبة وبطء في نقلها والتعامل معها، كما أننا نحتاج لتحويل الملفات إلى بيانات ثنائية (0,1) لنتمكن من تخزينها في الجدول، الأسلوب الأفضل والمتبع في المواقع هو رفع الملفات إلى مجلد عادي وتخزين أسماء الملفات المرفوعة ضمن قاعدة البيانات مع تخزين معلومات أخرى عنها كتاريخ الرفع مثلا. على العموم لن ندخل بهذه التفاصيل الآن على اعتبار أننا لم نتطرق لموضوع قواعد البيانات، سيكون لنا عودة لمناقشة كيفية رفع الملفات بأسلوب احترافي في الدروس المتقدمة.
							</p>

							<p>
								<strong>ملاحظة</strong>: يتم قبول رفع الملفات ذات الأحجام أصغر من 4 ميغابايت ( عد للمثال الأول وحاول رفع ملف أكبر من هذا الحجم لترى عدم قبول العملية )، ولتغيير الحجم الأقصى المسموح به لكل ملف، نفتح الملف <span style="font-family:courier new,courier,monospace;">Web.config</span> ونضيف كود السطر الرابع:
							</p>

							<p>
								<strong>كود XML</strong>
							</p>

							<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
&lt;configuration&gt;
	&lt;system.web&gt;
		&lt;compilation debug="true" targetFramework="4.0"/&gt;
              &lt;httpRuntime maxRequestLength="10240"/&gt;
	&lt;/system.web&gt;
&lt;/configuration&gt;
</pre>

							<p dir="rtl">
								حيث تم تحديد الحجم الأعظمي بـ 10240 كيلو بايت ( أي 10 ميغا بايت ).
							</p>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>
]]></description><guid isPermaLink="false">138</guid><pubDate>Sat, 01 Aug 2015 11:34:00 +0000</pubDate></item><item><title>ASP.NET: &#x639;&#x631;&#x636; &#x627;&#x644;&#x635;&#x648;&#x631;</title><link>https://academy.hsoub.com/programming/c-sharp/dotnet/aspnet/aspnet-%D8%B9%D8%B1%D8%B6-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-r125/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2017_06/asp_net.3.png.b73bf438f26a2b4014cc668489c33914.png" /></p>

<p dir="rtl">
	قمنا في <a href="https://academy.hsoub.com/code/general/aspnet-%D8%A5%D8%B1%D8%B3%D8%A7%D9%84-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-r120/" rel="">الدرس السابق</a> من سلسلة "<a href="https://academy.hsoub.com/search/?tags=%D9%85%D8%AF%D8%AE%D9%84+%D8%A5%D9%84%D9%89+asp.net" rel="">مدخل إلى ASP.NET</a>" بالتعرف على كيفية إرسال بيانات النماذج إلى الخادوم بواسطة أدوات الأزرار المتنوعة. سنقوم في هذا الدرس بالتعرف على أداتين لعرض الصور في ASP.NET.
</p>

<p dir="rtl">
	منصة عمل ASP.NET تقدم أداتين لعرض الصور وهي Image وImageMap. تقوم أداة التحكم Image بعرض الصور بأسلوب بسيط، في حين أن الأداة ImageMap تقدم مزايا أكثر تعقيدا، سنتعرف على كلا الأداتين في الفقرات التالية.
</p>

<h2 dir="rtl">
	استخدام أداة التحكم Image
</h2>

<p dir="rtl">
	تستخدم أداة التحكم <span style="font-family:courier new,courier,monospace;">Image</span> لعرض صورة محددة عبر الخاصية <span style="font-family:courier new,courier,monospace;">ImageUrl</span>، سنتعرف على بعض بعض خصائص هذه الأداة ثم نطبق مثال عليها.
</p>

<h3 dir="rtl">
	خصائص أداة التحكم Image:
</h3>

<ul dir="rtl">
<li>
		<strong>AlternateText</strong>: نص بديل يتم عرضه في حال عدم عرض الصورة المحددة.
	</li>
	<li>
		<strong>DescriptionUrl</strong>: لتحديد رابط إلى صفحة تحتوي تفاصيل عن الصورة.
	</li>
	<li>
		<strong>GenerateEmptyAlternateText</strong>: إسناد سلسلة فارغة كنص بديل للصورة.
	</li>
	<li>
		<strong>ImageAlign</strong>: تحديد موقع الصورة بالنسبة لأدوات html أخرى ويمكن أن تأخذ إحدى القيم التالية: AbsBottom ،AbsMiddle ،Baseline ،Bottom ،Left ،Middle ،NotSet ،Right ،TextTop ،Top.
	</li>
	<li>
		<strong>ImageUrl</strong>: لتحديد مسار واسم الصورة التي سيتم عرضها.
	</li>
</ul>
<p dir="rtl">
	<strong>مثال:</strong> سنقوم في المثال التالي بجعل أداة <span style="font-family:courier new,courier,monospace;">Image</span> تقوم بعرض واحدة من ثلاث صور وبشكل عشوائي، أنشئ صفحة جديدة وأضف عليها أداة <span style="font-family:courier new,courier,monospace;">Image</span>، أنشئ ضمن المشروع مجلد جديد باسم images أضف عليه ثلاث صور ولتكن أسماؤها pic1 ،pic2 ،pic3 افتح ملف الكود الخلفي أي الصفحة <span style="font-family:courier new,courier,monospace;">Default.aspx.cs</span> وفي حدث تحميل الصفحة (Page_Load) اكتب الكود التالي:
</p>

<div>
	<strong>كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>
</div>

<div>
	<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Page_Load</span><span class="pun">(</span><span class="kwd">object</span><span class="pln"> sender</span><span class="pun">،</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">Random</span><span class="pln"> rnd </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Random</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">switch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rnd</span><span class="pun">.</span><span class="typ">Next</span><span class="pun">(</span><span class="lit">3</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">0</span><span class="pun">:</span><span class="pln">
                </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">ImageUrl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"~/images/pic1.png"</span><span class="pun">;</span><span class="pln">
                </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">AlternateText</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"picture1"</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln">
                </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">ImageUrl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"~/images/pic2.png"</span><span class="pun">;</span><span class="pln">
                </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">AlternateText</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"picture2"</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> </span><span class="lit">2</span><span class="pun">:</span><span class="pln">
                </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">ImageUrl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"~/images/pic3.png"</span><span class="pun">;</span><span class="pln">
                </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">AlternateText</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"picture3"</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span></pre>

	<p dir="rtl">
		<strong>كود VB</strong>
	</p>

	<div>
		<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">   </span><span class="typ">Protected</span><span class="pln"> </span><span class="typ">Sub</span><span class="pln"> </span><span class="typ">Page_Load</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> sender </span><span class="typ">As</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">،</span><span class="pln"> </span><span class="typ">ByVal</span><span class="pln"> e </span><span class="typ">As</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pun">)</span><span class="pln"> 
    </span><span class="typ">Handles</span><span class="pln">  </span><span class="typ">Me</span><span class="pun">.</span><span class="typ">Load</span><span class="pln"> 

    </span><span class="typ">Dim</span><span class="pln"> rnd </span><span class="typ">As</span><span class="pln"> </span><span class="typ">New</span><span class="pln"> </span><span class="typ">Random</span><span class="pun">()</span><span class="pln"> 
    </span><span class="typ">Select</span><span class="pln"> </span><span class="typ">Case</span><span class="pln"> rnd</span><span class="pun">.[</span><span class="typ">Next</span><span class="pun">](</span><span class="lit">3</span><span class="pun">)</span><span class="pln"> 
        </span><span class="typ">Case</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> 
            </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">ImageUrl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"~/images/pic1.bmp"</span><span class="pln"> 
            </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">AlternateText</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"picture1"</span><span class="pln"> 
        </span><span class="typ">Exit</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
        </span><span class="typ">Case</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> 
            </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">ImageUrl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"~/images/pic2.jpg"</span><span class="pln"> 
            </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">AlternateText</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"picture2"</span><span class="pln"> 
        </span><span class="typ">Exit</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
        </span><span class="typ">Case</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> 
            </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">ImageUrl</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"~/images/pic3.bmp"</span><span class="pln"> 
            </span><span class="typ">Image1</span><span class="pun">.</span><span class="typ">AlternateText</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"picture3"</span><span class="pln"> 
        </span><span class="typ">Exit</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
        </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Sub</span><span class="pln"> </span></pre>

		<p>
			نفذ الصفحة السابقة ليتم عرض إحدى الصور الثلاث، اضغط على زر تحديث الصفحة (أو F5) ليتم عرض صورة أخرى وبشكل عشوائي. مماسبق نلاحظ مدى بساطة التعامل مع أداة التحكم <span style="font-family:courier new,courier,monospace;">Image</span>، في الفقرة التالية سنتعرف على أداة تستخدم أيضا لعرض الصور ولكن بخيارات ومزايا أكثر تنوعا ً.
		</p>

		<h2>
			استخدام أداة التحكم ImageMap
		</h2>
	</div>

	<div>
		<p dir="rtl">
			تستخدم هذه الأداة لعرض صورة ما بالإضافة لربطها مع خريطة غير مرئية، بمعنى آخر عند نقر المستخدم على أجزاء مختلفة من الصورة فبإمكاننا الاستجابة بردود فعل مختلفة أيضا بحسب إحداثيات موقع النقر على الصورة، وعلى هذا الأساس فبإمكاننا استخدام هذه الأداة كوسيلة للتنقل بين الصفحات مثلا ً، حيث نقوم بعرض صورة تحتوي على رسومات معبرة عن صفحات تالية ثم نحدد عند النقر على موقع ما من هذه الصورة الصفحة التي سيتم الإنتقال لها، استخدام آخر لهذه الأداة هو تحديد دخل المستخدم حيث بإمكاننا عرض صورة تحتوي على منتجات عديدة ويكون خيار المستخدم بحسب المنتج الذي تم الضغط عليه على الصورة.
		</p>

		<p dir="rtl">
			أداة التحكم <span style="font-family:courier new,courier,monospace;">ImageMap</span> ترتبط تلقائيا مع صف <span style="font-family:courier new,courier,monospace;">HotSpot class</span> والذي يسمح بتحديد مناطق قابلة للنقر على الأداة <span style="font-family:courier new,courier,monospace;">ImageMap</span>، منصة العمل ASP.Net تقدم ثلاثة صفوف من النمط <span style="font-family:courier new,courier,monospace;">HotSpot</span> بإمكاننا التعامل معها وهي:
		</p>

		<ul dir="rtl">
<li>
				<strong>CircleHotSpot</strong>: تمكننا من تحديد منطقة دائرية على خريطة الصورة.
			</li>
			<li>
				<strong>PolygonHotSpot</strong>: تمكننا من تحديد شكل غير منتظم على خريطة الصورة.
			</li>
			<li>
				<strong>RectangleHotSpot</strong>: تمكننا من تحديد منطقة مستطيلة على خريطة الصورة.
			</li>
		</ul>
<h3 dir="rtl">
			خصائص أداة التحكم ImageMap:
		</h3>

		<ul dir="rtl">
<li>
				<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة.
			</li>
			<li>
				<strong>AlternateText</strong>: نص بديل يتم عرضه في حال عدم عرض الصورة المحددة.
			</li>
			<li>
				<strong>DescriptionUrl</strong>: لتحديد رابط إلى صفحة تحتوي تفاصيل عن الصورة.
			</li>
			<li>
				<strong>GenerateEmptyAlternateText</strong>: إسناد سلسلة فارغة كنص بديل للصورة.
			</li>
			<li>
				<strong>HotSpotMode</strong>: تحديد السلوك الذي سيتم تنفيذه عند الضغط على منطقة من الصورة وتأخذ إحدى القيم التالية: Inactive ،Navigate ،NotSet ،PostBack.
			</li>
			<li>
				<strong>HotSpots</strong>: تكمننا من الحصول على جميع النقاط الساخنة (<span style="font-family:courier new,courier,monospace;">HotSpots</span>) الموجودة ضمن أداة التحكم <span style="font-family:courier new,courier,monospace;">ImageMap</span>.
			</li>
			<li>
				<strong>ImageAlign</strong>: تحديد موقع الصورة بالنسبة لأدوات html أخرى ويمكن أن تأخذ إحدى القيم التالية: AbsBottom ،AbsMiddle ،Baseline ،Bottom ،Left ،Middle ،NotSet، Right ،TextTop ،Top.
			</li>
			<li>
				<strong>ImageUrl</strong>: لتحديد مسار واسم الصورة التي سيتم عرضها.
			</li>
			<li>
				<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
			</li>
			<li>
				<strong>Target</strong>: تسمح لنا بفتح الصفحة في نافذة جديدة.
			</li>
		</ul>
<p dir="rtl">
			أداة التحكم <span style="font-family:courier new,courier,monospace;">ImageMap</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تدعم الحدث <span style="font-family:courier new,courier,monospace;">Click</span> والذي يتم إطلاقه عند الضغط على منطقة من هذه الأداة وكانت الخاصية <span style="font-family:courier new,courier,monospace;">HotSpotMode</span> تأخذ القيمة <span style="font-family:courier new,courier,monospace;">PostBack</span>.
		</p>

		<p>
			<strong>مثال</strong>: سنقوم في المثال بعرض كيفية استخدام أحد جوانب أداة التحكم <span style="font-family:courier new,courier,monospace;">ImageMap</span>، حيث سنقوم بإنشاء قائمة للتنقل بين صفحات مختلفة، أنشئ مشروع جديد وأضف أربع صفحات ولتكن أسماؤها Dafault، page1 ،page2 ،page3. أضف على الصفحة <span style="font-family:courier new,courier,monospace;">Default</span> أداة <span style="font-family:courier new,courier,monospace;">ImageMap</span> واجعلها تعرض صورة مناسبة للغرض السابق.
		</p>

		<p>
			حيث سنقوم بتقسيم أداة الصورة السابقة إلى ثلاث مناطق وكل منطقة تنقلنا إلى صفحة محددة.
		</p>

		<p>
			كود صفحة<span style="font-family:courier new,courier,monospace;"> Default.aspx</span>:
		</p>

		<p>
			<strong>كود ASP.net</strong>
		</p>

		<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="tag">&lt;div&gt;</span><span class="pln">
        </span><span class="tag">&lt;asp:ImageMap</span><span class="pln"> </span><span class="atn">ID</span><span class="pun">=</span><span class="atv">"ImageMap1"</span><span class="pln"> </span><span class="atn">runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> 
                      </span><span class="atn">ImageUrl</span><span class="pun">=</span><span class="atv">"~/images/navigationBar.jpg"</span><span class="tag">&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:RectangleHotSpot</span><span class="pln"> </span><span class="atn">NavigateUrl</span><span class="pun">=</span><span class="atv">"~/page1.aspx"</span><span class="pln"> </span><span class="atn">Left</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">Top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> 
               </span><span class="atn">Right</span><span class="pun">=</span><span class="atv">"100"</span><span class="pln"> </span><span class="atn">Bottom</span><span class="pun">=</span><span class="atv">"30"</span><span class="pln"> </span><span class="atn">AlternateText</span><span class="pun">=</span><span class="atv">"go to page1"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:RectangleHotSpot</span><span class="pln"> </span><span class="atn">NavigateUrl</span><span class="pun">=</span><span class="atv">"~/page2.aspx"</span><span class="pln"> </span><span class="atn">Left</span><span class="pun">=</span><span class="atv">"100"</span><span class="pln"> </span><span class="atn">Top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> 
               </span><span class="atn">Right</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">Bottom</span><span class="pun">=</span><span class="atv">"30"</span><span class="pln"> </span><span class="atn">AlternateText</span><span class="pun">=</span><span class="atv">"go to page2"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:RectangleHotSpot</span><span class="pln"> </span><span class="atn">NavigateUrl</span><span class="pun">=</span><span class="atv">"~/page3.aspx"</span><span class="pln"> </span><span class="atn">Left</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">Top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> 
               </span><span class="atn">Right</span><span class="pun">=</span><span class="atv">"300"</span><span class="pln"> </span><span class="atn">Bottom</span><span class="pun">=</span><span class="atv">"30"</span><span class="pln"> </span><span class="atn">AlternateText</span><span class="pun">=</span><span class="atv">"go to page3"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

        </span><span class="tag">&lt;/asp:ImageMap&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

		<p dir="rtl">
			نلاحظ من الكود السابق أن للخاصية <span style="font-family:courier new,courier,monospace;">RectangleHotSpot</span> الخصائص الفرعية <span style="font-family:courier new,courier,monospace;">Left</span> ،<span style="font-family:courier new,courier,monospace;">Right</span> ،<span style="font-family:courier new,courier,monospace;">Top</span> ،<span style="font-family:courier new,courier,monospace;">Bottom</span> لنحدد إحداثيات المنطقة (حجم الصورة في المثال 300x30). وكل منطقة تم ربطها بصفحة معينة عبر الخاصية <span style="font-family:courier new,courier,monospace;">NavigateUrl</span> ليتم نقل المتصفح إليها عند النقر على تلك المنطقة.
		</p>

		<p dir="rtl">
			<strong>مثال آخر</strong>: بعد أن تعرفنا على كيفية استخدام الأداة <span style="font-family:courier new,courier,monospace;">ImageMap</span> للتنقل بين الصفحات المختلفة، سنعرض هنا آلية العمل مع <span style="font-family:courier new,courier,monospace;">PostBack</span> أي البقاء ضمن نفس الصفحة، أضف صفحة جديدة وأضف عليها <span style="font-family:courier new,courier,monospace;">TextBox</span> و<span style="font-family:courier new,courier,monospace;">ImageMap</span>، الصورة المطلوبة ليتم عرضها.
		</p>

		<div>
			<p dir="rtl">
				المطلوب تنفيذه هو أنه عند الضغط المنطقة الأولى (ToUpper) يتم تحويل النص المكتوب في أداة <span style="font-family:courier new,courier,monospace;">TextBox</span> إلى حالة أحرف كبيرة، وعند الضغط المنطقة الثانية (ToLower) يتم تحويل النص المكتوب في أداة <span style="font-family:courier new,courier,monospace;">TextBox</span> إلى حالة أحرف صغيرة، ويؤدي الضغط على المنطقة الثالثة إلى مسح (Erase) النص الموجدود في الأداة <span style="font-family:courier new,courier,monospace;">TextBox</span>، انقر على الأداة <span style="font-family:courier new,courier,monospace;">ImageMap</span> مرتين وأضف الكود التالي:
			</p>

			<div>
				<strong style="line-height: 22.3999996185303px;">كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>
			</div>

			<div>
				<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">ImageMap1_Click</span><span class="pun">(</span><span class="kwd">object</span><span class="pln"> sender</span><span class="pun">،</span><span class="pln"> </span><span class="typ">ImageMapEventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">switch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="typ">PostBackValue</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> </span><span class="str">"ToUpper"</span><span class="pun">:</span><span class="pln">
                </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pun">.</span><span class="typ">ToUpper</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> </span><span class="str">"ToLower"</span><span class="pun">:</span><span class="pln">
                </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pun">.</span><span class="typ">ToLower</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> </span><span class="str">"Erase"</span><span class="pun">:</span><span class="pln">
                </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">String</span><span class="pun">.</span><span class="typ">Empty</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> 
    </span><span class="pun">}</span></pre>

				<p>
					<strong style="line-height: 22.3999996185303px;">كود VB</strong>
				</p>

				<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="typ">Select</span><span class="pln"> </span><span class="typ">Case</span><span class="pln"> e</span><span class="pun">.</span><span class="typ">PostBackValue</span><span class="pln"> 
        </span><span class="typ">Case</span><span class="pln"> </span><span class="str">"ToUpper"</span><span class="pln"> 
            </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pun">.</span><span class="typ">ToUpper</span><span class="pun">()</span><span class="pln"> 
        </span><span class="typ">Exit</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
        </span><span class="typ">Case</span><span class="pln"> </span><span class="str">"ToLower"</span><span class="pln"> 
            </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pun">.</span><span class="typ">ToLower</span><span class="pun">()</span><span class="pln"> 
        </span><span class="typ">Exit</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
        </span><span class="typ">Case</span><span class="pln"> </span><span class="str">"Erase"</span><span class="pln"> 
            </span><span class="typ">TextBox1</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="typ">String</span><span class="pun">].</span><span class="typ">Empty</span><span class="pln"> 
        </span><span class="typ">Exit</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> 
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Select</span><span class="pln"> </span></pre>

				<p dir="rtl">
					في الكود السابق استقبلنا الخاصية <span style="font-family:courier new,courier,monospace;">PostBackVlaue</span> والتي يتم تحديد قيمتها بحسب المنطقة التي يتم الضغط عليها في الأداة <span style="font-family:courier new,courier,monospace;">ImageMap</span> كما سنرى، كود الصفحة:
				</p>

				<div>
					<strong>كود ASP.net</strong>
				</div>

				<div>
					<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="tag">&lt;div&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:ImageMap</span><span class="pln"> </span><span class="atn">ID</span><span class="pun">=</span><span class="atv">"ImageMap1"</span><span class="pln"> </span><span class="atn">runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> </span><span class="atn">HotSpotMode</span><span class="pun">=</span><span class="atv">"PostBack"</span><span class="pln"> 
            </span><span class="atn">ImageUrl</span><span class="pun">=</span><span class="atv">"~/images/textCase.jpg"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="typ">ImageMap1_Click</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:RectangleHotSpot</span><span class="pln"> </span><span class="atn">PostBackValue</span><span class="pun">=</span><span class="atv">"ToUpper"</span><span class="pln"> </span><span class="atn">Left</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">Top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">Right</span><span class="pun">=</span><span class="atv">"100"</span><span class="pln"> 
                              </span><span class="atn">Bottom</span><span class="pun">=</span><span class="atv">"30"</span><span class="pln"> </span><span class="atn">AlternateText</span><span class="pun">=</span><span class="atv">"ToUpper"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:RectangleHotSpot</span><span class="pln"> </span><span class="atn">PostBackValue</span><span class="pun">=</span><span class="atv">"ToLower"</span><span class="pln"> </span><span class="atn">Left</span><span class="pun">=</span><span class="atv">"100"</span><span class="pln"> </span><span class="atn">Top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> 
                              </span><span class="atn">Right</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">Bottom</span><span class="pun">=</span><span class="atv">"30"</span><span class="pln"> </span><span class="atn">AlternateText</span><span class="pun">=</span><span class="atv">"ToLower"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:RectangleHotSpot</span><span class="pln"> </span><span class="atn">PostBackValue</span><span class="pun">=</span><span class="atv">"Erase"</span><span class="pln"> </span><span class="atn">Left</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">Top</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">Right</span><span class="pun">=</span><span class="atv">"300"</span><span class="pln"> 
                              </span><span class="atn">Bottom</span><span class="pun">=</span><span class="atv">"30"</span><span class="pln"> </span><span class="atn">AlternateText</span><span class="pun">=</span><span class="atv">"Erase"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;/asp:ImageMap&gt;</span><span class="pln">

        </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

        </span><span class="tag">&lt;asp:TextBox</span><span class="pln"> </span><span class="atn">ID</span><span class="pun">=</span><span class="atv">"TextBox1"</span><span class="pln"> </span><span class="atn">runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> </span><span class="atn">TextMode</span><span class="pun">=</span><span class="atv">"MultiLine"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        
    </span><span class="tag">&lt;/div&gt;</span></pre>

					<p dir="rtl">
						نلاحظ في الكود السابق تحديد الخاصية <span style="font-family:courier new,courier,monospace;">HotSpotMode</span> إلى القيمة <span style="font-family:courier new,courier,monospace;">PostBack</span>، وفي كل منطقة ساخنة تم تحديد قيمة مختلفة للخاصية <span style="font-family:courier new,courier,monospace;">PostBackValue</span> لتمييز المنطقة التي تم النقر عليها.
					</p>

					<h2 dir="rtl">
						استخدام أداة التحكم Panel
					</h2>

					<p dir="rtl">
						تمكننا هذه الأداة من التعامل مع مجموعة أدوات ASP.Net دفعة واحدة، حيث يتم تطبيق سلوك ما على جميع أدوات التحكم الموجودة ضمن أداة <span style="font-family:courier new,courier,monospace;">Panel</span>، على سبيل المثال لو تم إخفاء أداة التحكم هذه فسيختفي معها جميع الأدوات المحتوات ضمنها وكذلك لو تم إلغاء تفعيل أداة <span style="font-family:courier new,courier,monospace;">Panel</span> فسيتم إلغاء تفعيل جميع أدوات التحكم الموجودة ضمنها وهكذا.
					</p>

					<h3 dir="rtl">
						خصائص أداة التحكم Panel:
					</h3>

					<ul dir="rtl">
<li>
							<strong>DefaultButton</strong>: تمكننا هذه الخاصية من تحديد زر افتراضي ضمن الأداة <span style="font-family:courier new,courier,monospace;">Panel</span> بيحث يتم تنفيذ الكود داخله بمجرد الضغط على مفتاح Enter من لوحة المفاتيح.
						</li>
						<li>
							<strong>Direction</strong>: تحديد اتجاه النص والأدوات ضمن <span style="font-family:courier new,courier,monospace;">Panel</span> يمكن أن تأخذ إحدى القيم التالية NotSet ،LeftToRight ،RightToLeft.
						</li>
						<li>
							<strong>GroupingText</strong>: تحديد عنوان لأداة <span style="font-family:courier new,courier,monospace;">Panel</span>.
						</li>
						<li>
							<strong>HorizontalAlign</strong>: تحديد المحاذاة الأفقية لمحتويات أداة <span style="font-family:courier new,courier,monospace;">Panel</span> ويمكن أن تأخذ إحدى القيم التالية NotSet ،Justify ،Left ،Center ،Right.
						</li>
						<li>
							<strong>ScrollBars</strong>: تمكننا من إظهار شريط تمرير أفقي أو عمودي (أو كلاهما) لأداة <span style="font-family:courier new,courier,monospace;">Panel</span> وتأخذ إحدى القيم التالية None ،Horizontal ،Vertical ،Both ،Auto.
						</li>
					</ul>
<p>
						<strong>مثال</strong>: سنقوم في التطبيق التالي بإضافة <span style="font-family:courier new,courier,monospace;">Panel</span> ومن ثم نضف إليها مجموعة من أدوات التحكم المختلفة لنرى أن تطبيق أمر ما على <span style="font-family:courier new,courier,monospace;">Panel</span> سيتم تطبيقه على الأدوات داخلها أيضا ً، أنشئ صفحة جديدة، أضف أداة تحكم <span style="font-family:courier new,courier,monospace;">Panel</span> وضع داخلها مجموعة من أدوات التحكم ثم ضع زر واحد خارجها وليكن كود الصفحة شبيه بالآتي:
					</p>

					<p>
						<strong>كود ASP.net</strong>
					</p>

					<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="tag">&lt;div&gt;</span><span class="pln">

    </span><span class="tag">&lt;asp:Panel</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"pnlContact"</span><span class="pln"> </span><span class="atn">GroupingText</span><span class="pun">=</span><span class="atv">"Contact Information"</span><span class="pln"> </span><span class="atn">Runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;asp:Label</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"lblFirstName"</span><span class="pln"> </span><span class="atn">Text</span><span class="pun">=</span><span class="atv">"First Name:"</span><span class="pln"> 
                   </span><span class="atn">AssociatedControlID</span><span class="pun">=</span><span class="atv">"txtFirstName"</span><span class="pln"> </span><span class="atn">Runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;asp:TextBox</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"txtFirstName"</span><span class="pln"> </span><span class="atn">AutoCompleteType</span><span class="pun">=</span><span class="atv">"FirstName"</span><span class="pln"> </span><span class="atn">Runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> 
                     </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;asp:Label</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"lblLastname"</span><span class="pln"> </span><span class="atn">Text</span><span class="pun">=</span><span class="atv">"Last Name:"</span><span class="pln"> 
                   </span><span class="atn">AssociatedControlID</span><span class="pun">=</span><span class="atv">"txtLastName"</span><span class="pln"> </span><span class="atn">Runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;asp:TextBox</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"txtLastName"</span><span class="pln"> </span><span class="atn">AutoCompleteType</span><span class="pun">=</span><span class="atv">"LastName"</span><span class="pln"> </span><span class="atn">Runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> 
                     </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;asp:Button</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"btnSubmit"</span><span class="pln"> </span><span class="atn">Text</span><span class="pun">=</span><span class="atv">"Submit"</span><span class="pln"> </span><span class="atn">Runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;/asp:Panel&gt;</span><span class="pln">

    </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;asp:Button</span><span class="pln"> </span><span class="atn">ID</span><span class="pun">=</span><span class="atv">"Button1"</span><span class="pln"> </span><span class="atn">runat</span><span class="pun">=</span><span class="atv">"server"</span><span class="pln"> </span><span class="atn">Text</span><span class="pun">=</span><span class="atv">"Visible"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="typ">Button1_Click</span><span class="atv">"</span><span class="pln"> 
                </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

					<div>
						<p dir="rtl">
							أما الكود الذي يتم إضافته لحدث الضغط على الزر <span style="font-family:courier new,courier,monospace;">Button1</span> فهو:
						</p>

						<div>
							<strong style="line-height: 22.3999996185303px;">كود <span style="line-height: 22.3999996185303px;">#</span>C</strong>
						</div>

						<div>
							<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Button1_Click</span><span class="pun">(</span><span class="kwd">object</span><span class="pln"> sender</span><span class="pun">،</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        pnlContact</span><span class="pun">.</span><span class="typ">Visible</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pnlContact</span><span class="pun">.</span><span class="typ">Visible</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

							<p>
								<strong style="line-height: 22.3999996185303px;">كود VB</strong>
							</p>

							<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="4" style="">
<span class="pln">    </span><span class="typ">Protected</span><span class="pln"> </span><span class="typ">Sub</span><span class="pln"> </span><span class="typ">Button1_Click</span><span class="pun">(</span><span class="typ">ByVal</span><span class="pln"> sender </span><span class="typ">As</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">،</span><span class="pln"> </span><span class="typ">ByVal</span><span class="pln"> e </span><span class="typ">As</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pun">)</span><span class="pln"> 
        pnlContact</span><span class="pun">.</span><span class="typ">Visible</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> pnlContact</span><span class="pun">.</span><span class="typ">Visible</span><span class="pln"> 
    </span><span class="typ">End</span><span class="pln"> </span><span class="typ">Sub</span><span class="pln">  </span></pre>

							<p dir="rtl">
								نفذ التطبيق السابق لترى تأثير خصائص الأداة <span style="font-family:courier new,courier,monospace;">Panel</span> على محتوياتها.
							</p>

							<p dir="rtl">
								إذا تعمل أداة التحكم <span style="font-family:courier new,courier,monospace;">Panel</span> على تجميع أدوات التحكم ذات وظيفة أو صفات مشتركة يحددها أسلوب العمل في مجموعات، بغرض تنظيم الصفحة والاستفادة من المزايا التي تقدمها هذه الأداة.
							</p>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>
]]></description><guid isPermaLink="false">125</guid><pubDate>Wed, 08 Jul 2015 12:58:00 +0000</pubDate></item><item><title>ASP.NET: &#x625;&#x631;&#x633;&#x627;&#x644; &#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; &#x627;&#x644;&#x646;&#x645;&#x648;&#x630;&#x62C;</title><link>https://academy.hsoub.com/programming/c-sharp/dotnet/aspnet/aspnet-%D8%A5%D8%B1%D8%B3%D8%A7%D9%84-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-r120/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2017_06/asp_net.2.png.847b6c23dfdfc288788fa6e66878d326.png" /></p>

<p dir="rtl">
	قمنا في <a href="https://academy.hsoub.com/code/general/aspnet-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%82%D9%8A%D8%A7%D8%B3%D9%8A%D8%A9-r114/" rel="">الدرس السابق</a> من سلسلة "<a href="https://academy.hsoub.com/search/?tags=%D9%85%D8%AF%D8%AE%D9%84+%D8%A5%D9%84%D9%89+asp.net" rel="">مدخل إلى ASP.NET</a>" بالتعرف على عناصر التحكم الأساسية المضمنة في منصة العمل ASP.NET. في هذا الدرس سنتعرف على كيفية إرسال بيانات النماذج إلى الخادوم بواسطة أدوات الأزرار المتنوعة.
</p>

<p dir="rtl">
	تزودنا منصة عمل ASP.Net بثلاث أدوات لإرسال بيانات النموذج إلى الخادوم وهي <span style="font-family:courier new,courier,monospace;">Button</span> ،<span style="font-family:courier new,courier,monospace;">LinkButton</span> ،<span style="font-family:courier new,courier,monospace;">ImageButton</span> وهم يؤدون نفس الوظيفة ولكن لكل منهم مظهر وبعض الخصائص التي تميزه عن غيره.
</p>

<h2 dir="rtl">
	استخدام أداة التحكم Button
</h2>

<p>
	تقوم هذه الأداة عند النقر عليها بإرسال بيانات الصفحة إلى <span style="line-height: 22.3999996185303px;">الخادوم</span> لتتم معالجتها كما يتم تنفيذ الكود الموجود ضمن الحدث <span style="font-family:courier new,courier,monospace;">Click</span> الخاص بهذه الأداة، يقوم المثال التالي بعرض الوقت الحالي في أداة <span style="font-family:courier new,courier,monospace;">Label</span> عند النقر على الزر <span style="font-family:courier new,courier,monospace;">Button</span>، أنشئ صفحة جديدة أضف لها <span style="font-family:courier new,courier,monospace;">Button</span> و<span style="font-family:courier new,courier,monospace;">Label</span> اضغط على الزر مرتين واكتب الكود التالي:
</p>

<p>
	<strong>كود #C</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
protected void Button1_Click(object sender، EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString("T");
    }
</pre>

<p>
	<strong>كود VB</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
Protected Sub Button1_Click(ByVal sender As Object، ByVal e As  
  System.EventArgs)  Handles Button1.Click
     Label1.Text = DateTime.Now.ToString("T")
End Sub
</pre>

<p>
	كود الصفحة كاملا ً:
</p>

<p>
	<strong>كود ASP.net</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:Button ID="Button1" runat="server" Text="Button" 
                    onclick="Button1_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text="" /&gt;
    &lt;/div&gt;
</pre>

<p dir="rtl">
	لاحظ عند الضغط على الزر يتم إعادة تحميل الصفحة بالكامل حيث تم إرسالها للخادوم وقام بعملية المعالجة المطلوبة ثم أعادة النتيجة للمستخدم.
</p>

<h3 dir="rtl">
	خصائص أداة التحكم Button
</h3>

<ul dir="rtl">
<li>
		<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة.
	</li>
	<li>
		<strong>CommandArgument</strong>: تحديد متغير يتم إرساله إلى الحدث <span style="font-family:courier new,courier,monospace;">Command</span>.
	</li>
	<li>
		<strong>CommandName</strong>: تحديد اسم الأمر الذي يتم إرساله إلى الحدث <span style="font-family:courier new,courier,monospace;">Command</span>.
	</li>
	<li>
		<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
	</li>
	<li>
		<strong>OnClientClick</strong>: لتحديد كود يتم تنفيذه على جهاز المستخدم عند الضغط على الزر.
	</li>
	<li>
		<strong>PostBackUrl</strong>: للإنتقال إلى صفحة معينة بعد إرسال البيانات إلى <span style="line-height: 22.3999996185303px;">الخادوم</span>.
	</li>
	<li>
		<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
	</li>
	<li>
		<strong>Text</strong>: تحديد النص الذي يظهر على هذه الأداة.
	</li>
	<li>
		<strong>UseSubmitBehavior</strong>: تمكننا من استخدام الجافا سكربت لإرسال بيانات النموذج.
	</li>
</ul>
<p dir="rtl">
	أداة التحكم <span style="font-family:courier new,courier,monospace;">Button</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تدعم الحدثين:
</p>

<ul dir="rtl">
<li>
		<strong>Click</strong>: يتم إطلاقه عند الضغط على الزر.
	</li>
	<li>
		<strong>Command</strong>: يتم إطلاقه عند الضغط على الزر، ويتم تمرير <span style="font-family:courier new,courier,monospace;">CommandArgument</span> و<span style="font-family:courier new,courier,monospace;">CommandName</span> إلى هذا الحدث.
	</li>
</ul>
<h2 dir="rtl">
	استخدام أداة التحكم LinkButton
</h2>

<p dir="rtl">
	تؤدي نفس عمل الأداة <span style="font-family:courier new,courier,monospace;">Button</span> ولكنها تختلف من حيث المظهر فهي تبدو كرابط وليس كزر وبالتالي يمكن تحديد صفحة للانتقال إليها عبر هذه الأداة،  لنقم بتنفيذ نفس المثال السابق ولكن نستبدل الأداة <span style="font-family:courier new,courier,monospace;">Button</span> بالأداة <span style="font-family:courier new,courier,monospace;">LinkButton</span>، الكود الذي يتم تنفيذه عند الضغط على LinkButton:
</p>

<div>
	<strong style="line-height: 22.3999996185303px;">كود #C</strong>
</div>

<div>
	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void LinkButton1_Click(object sender، EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString("T");
    }
</pre>

	<p>
		<strong style="line-height: 22.3999996185303px;">كود VB</strong>
	</p>

	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub LinkButton1_Click(ByVal sender As Object، ByVal e As 
    System.EventArgs) Handles LinkButton1.Click

        Label1.Text = DateTime.Now.ToString("T")
    End Sub
</pre>

	<p>
		كود الصفحة:
	</p>

	<p>
		<strong>كود ASP.net</strong>
	</p>

	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:LinkButton ID="LinkButton1" runat="server" 
                   onclick="LinkButton1_Click"&gt;LinkButton&lt;/asp:LinkButton&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text="" /&gt;
    &lt;/div&gt;
</pre>

	<p dir="rtl">
		تقوم الأداة <span style="font-family:courier new,courier,monospace;">LinkButton</span> وبشكل غير مرئي بتنفيذ كود جافا سكربت وعلى وجه التحديد يتم تنفيذ الطريقة <span style="font-family:courier new,courier,monospace;">doPostBack_</span> وهو المسؤول عن إرسال البيانات إلى <span style="line-height: 22.3999996185303px;">الخادوم</span>، في مثالنا السابق فإن الكود يبدو كالتالي:
	</p>

	<div>
		<strong>كود ASP.net</strong>
	</div>

	<div>
		<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
&lt;a id="LinkButton1" href="javascript:__doPostBack(‘LinkButton1’،’’)"&gt;Submit&lt;/a&gt;
</pre>

		<h3 dir="rtl">
			خصائص أداة التحكم LinkButton
		</h3>

		<ul dir="rtl">
<li>
				<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة.
			</li>
			<li>
				<strong>CommandArgument</strong>: تحديد <span style="line-height: 22.3999996185303px; text-align: right;">متغير</span> يتم إرساله إلى الحدث <span style="font-family:courier new,courier,monospace;">Command</span>.
			</li>
			<li>
				<strong>CommandName</strong>: تحديد اسم الأمر الذي يتم إرساله إلى الحدث <span style="font-family:courier new,courier,monospace;">Command</span>.
			</li>
			<li>
				<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
			</li>
			<li>
				<strong>OnClientClick</strong>: لتحديد كود يتم تنفيذه على جهاز المستخدم عند الضغط على هذه الأداة.
			</li>
			<li>
				<strong>PostBackUrl</strong>: للإنتقال إلى صفحة معينة بعد إرسال البيانات إلى <span style="line-height: 22.3999996185303px;">الخادوم</span>.
			</li>
			<li>
				<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
			</li>
			<li>
				<strong>Text</strong>: تحديد النص الذي يظهر على هذه الأداة.
			</li>
		</ul>
<p dir="rtl">
			أداة التحكم <span style="font-family:courier new,courier,monospace;">LinkButton</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تدعم الحدثين:
		</p>

		<ul dir="rtl">
<li>
				<strong>Click</strong>: يتم إطلاقه عند الضغط على هذه الأداة.
			</li>
			<li>
				<strong>Command</strong>: يتم إطلاقه عند الضغط على الأداة، ويتم تمرير <span style="font-family:courier new,courier,monospace;">CommandArgument</span> و<span style="font-family:courier new,courier,monospace;">CommandName</span> إلى هذا الحدث.
			</li>
		</ul>
<h2 dir="rtl">
			استخدام أداة التحكم HyperLink
		</h2>

		<div style="line-height: 22.3999996185303px;">
			<p dir="rtl">
				تعد هذه الأداة الطريقة الأكثر شيوعا ًوبساطة للتنقل بين الصفحات المختلفة، وعلى النقيض من الأداة <span style="font-family: 'courier new', courier, monospace;">LinkButton</span> فهي لاتقوم بإرسال البيانات إلى السيرفر.
			</p>

			<p dir="rtl">
				خصائص أداة التحكم <span style="font-family: 'courier new', courier, monospace;">HyperLink</span>:
			</p>

			<ul dir="rtl">
<li>
					<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
				</li>
				<li>
					<strong>ImageUrl</strong>: لتحديد مسار واسم صورة ليتم عرضها كرابط.
				</li>
				<li>
					<strong>NavigateUrl</strong>: تحديد عنوان URL يتم الانتقال إليه عند الضغط على هذه الأداة.
				</li>
				<li>
					<strong>Text</strong>: تحديد النص الذي يظهر على هذه الأداة.
				</li>
				<li>
					<strong>Target</strong>: تمكننا من فتح صفحة الرابط في نافذة جديدة بالمستعرض.
				</li>
			</ul>
<p dir="rtl" style="margin-bottom: 0pt; line-height: 1.2; margin-top: 0pt; text-align: justify;">
				<strong>ملاحظة : </strong>لو تم تحديد قيم للخاصيتين <span style="font-family: 'courier new', courier, monospace;">Text</span> و <span style="font-family: 'courier new', courier, monospace;">ImageUrl</span> معا ً، عندئذ سيتم عرض الصورة لأن أولويتها أعلى ولن يتم عرض النص المحدد بالخاصية <span style="font-family: 'courier new', courier, monospace;">Text</span>.
			</p>
		</div>

		<div style="line-height: 22.3999996185303px;">
			<p dir="rtl">
				<strong>مثال</strong>: أنشئ صفحة جديدة، أضف أداة <span style="font-family: 'courier new', courier, monospace;">HyperLink</span> وحدد خصائصها كالتالي:
			</p>

			<div>
				<strong>كود ASP.net</strong>
			</div>

			<div>
				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:HyperLink ID="HyperLink1" runat="server" ImageUrl="~/images/img.png" 
                       NavigateUrl="~/Default14.aspx"&gt;Go to Page Defaul14 page 
        &lt;/asp:HyperLink&gt;
    &lt;/div&gt;
</pre>

				<p dir="rtl">
					نفذ الصفحة السابقة ولاحظ عدم ظهور النص Go to Page Defaul14 page إنما ظهرت الصورة المحددة فقط.
				</p>
			</div>
		</div>

		<h2 dir="rtl">
			استخدام أداة التحكم ImageButton
		</h2>

		<p dir="rtl">
			تؤدي نفس وظيفة الأداتين السابقتين حيث تقوم بإرسال بيانات النموذج إلى <span style="line-height: 22.3999996185303px;">الخادوم</span> وتظهر كصورة على صفحة الانترنت، لنتعرف بداية ًعلى خصائص هذه الأداة ثم نطبق مثال توضيحي.
		</p>

		<h3 dir="rtl">
			خصائص أداة التحكم ImageButton:
		</h3>

		<ul dir="rtl">
<li>
				<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة.
			</li>
			<li>
				<strong>AlternateText</strong>: نص بديل يتم عرضه في حال عدم عرض الصورة المحددة.
			</li>
			<li>
				<strong>DescriptionUrl</strong>: لتحديد رابط إلى صفحة تحتوي تفاصيل عن الصورة.
			</li>
			<li>
				<strong>CommandArgument</strong>: تحديد <span style="line-height: 22.3999996185303px; text-align: right;">متغير</span> يتم إرساله إلى الحدث <span style="font-family:courier new,courier,monospace;">Command</span>.
			</li>
			<li>
				<strong>CommandName</strong>: تحديد اسم الأمر الذي يتم إرساله إلى الحدث <span style="font-family:courier new,courier,monospace;">Command</span>.
			</li>
			<li>
				<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
			</li>
			<li>
				<strong>ImageAlign</strong>: تحديد موقع الصورة بالنسبة لأدوات html أخرى ويمكن أن تأخذ إحدى القيم التالية: AbsBottom ،AbsMiddle ،Baseline ،Bottom ،Left ،Middle ،NotSet، Right ،TextTop ،Top.
			</li>
			<li>
				<strong>ImageUrl</strong>: لتحديد مسار واسم الصورة التي سيتم عرضها.
			</li>
			<li>
				<strong>OnClientClick</strong>: لتحديد كود يتم تنفيذه على جهاز المستخدم عند الضغط على هذه الأداة.
			</li>
			<li>
				<strong>PostBackUrl</strong>: للإنتقال إلى صفحة معينة بعد إرسال البيانات إلى <span style="line-height: 22.3999996185303px;">الخادوم</span>.
			</li>
			<li>
				<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
			</li>
		</ul>
<p dir="rtl">
			أداة التحكم <span style="font-family:courier new,courier,monospace;">ImageButton</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تدعم الحدثين:
		</p>

		<ul dir="rtl">
<li>
				<strong>Click</strong>: يتم إطلاقه عند الضغط على هذه الأداة.
			</li>
			<li>
				<strong>Command</strong>: يتم إطلاقه عند الضغط على الأداة، ويتم تمرير <span style="font-family:courier new,courier,monospace;">CommandArgument</span> و<span style="font-family:courier new,courier,monospace;">CommandName</span> إلى هذا الحدث.
			</li>
		</ul>
<p dir="rtl">
			<strong>مثال:</strong> سنقوم في المثال التالي بتحديد إحداثيات مكان ضغط المستخدم على الأداة <span style="font-family:courier new,courier,monospace;">ImageButton.</span>
		</p>

		<p dir="rtl">
			أنشئ صفحة جديدة ضع فيها أداة <span style="font-family:courier new,courier,monospace;">ImageButton</span> واجعلها تعرض صورة ما عبر الخاصية <span style="font-family:courier new,courier,monospace;">ImageUrl</span> ثم أضف أداتي <span style="font-family:courier new,courier,monospace;">Label</span>، اضغط على <span style="font-family:courier new,courier,monospace;">ImageButton</span> مرتين واكتب الكود التالي:
		</p>

		<div>
			<strong style="line-height: 22.3999996185303px;">كود #C</strong>
		</div>

		<div>
			<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void ImageButton1_Click(object sender، ImageClickEventArgs e)
    {
        Label1.Text = "X = " + e.X.ToString();
        Label2.Text = "Y = " + e.Y.ToString();
    }
</pre>

			<p>
				<strong style="line-height: 22.3999996185303px;">كود VB</strong>
			</p>

			<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
      Protected Sub ImageButton1_Click(ByVal sender As Object، ByVal e As 
     System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click

        Label1.Text = "X = " + e.X.ToString()
        Label2.Text = "Y = " + e.Y.ToString()
    End Sub
</pre>

			<p>
				كود الصفحة:
			</p>

			<p>
				<strong>كود ASP.net</strong>
			</p>

			<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:ImageButton ID="ImageButton1" runat="server"
              ImageUrl="~/images/img.png" 
            onclick="ImageButton1_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text=""/&gt;
        &lt;asp:Label ID="Label2" runat="server" Text=""/&gt;
    &lt;/div&gt;
</pre>

			<p>
				<strong>ملاحظة:</strong> عند التعامل مع أي أداة تقوم بعرض الصور ينصح بشدة أن نستخدم الخاصية <span style="font-family:courier new,courier,monospace;">AlternateText</span> لتقوم بعرض نص بديل فبعض المستخدمين يلغون خيار عرض الصور في المتصفح بهدف الحصول على سرعة أكبر في التصفح.
			</p>

			<h2 dir="rtl">
				إرسال البيانات عبر الصفحات
			</h2>

			<p dir="rtl">
				بشكل افتراضي، عند الضغط على زر ما في الصفحة، يتم إرسالها إلى <span style="line-height: 22.3999996185303px;">الخادوم</span> ومعالجة البيانات ثم عرضها على نفس الصفحة، أي يحدث إعادة تحميل للصفحة ببيانات معدلة، الآن سنتعلم كيف نجعل <span style="line-height: 22.3999996185303px;">الخادوم</span> يعيدنا إلى صفحة أخرى لعرض النتائج بعد أن نضغط على زر ما في صفحة أولى.
			</p>

			<p dir="rtl">
				<strong>مثال:</strong> أنشئ صفحة جديدة سمها <span style="font-family:courier new,courier,monospace;">search.aspx</span> أضف لها <span style="font-family:courier new,courier,monospace;">TextBox</span> و<span style="font-family:courier new,courier,monospace;">Button</span>، أعطي الخاصية <span style="font-family:courier new,courier,monospace;">PostBackUrl</span> القيمة <span style="font-family:courier new,courier,monospace;">results.aspx</span> وهي صفحة ثانية نقوم بإنشائها، هذه الخاصية كما رأينا سابقا تجعل <span style="line-height: 22.3999996185303px;">الخادوم</span> يعيد توجيه المتصفح إلى صفحة محددة عند الضغط على الزر، مانريده من مثالنا هذا أن يقوم المستخدم بإدخال نص ما في <span style="font-family:courier new,courier,monospace;">TextBox</span> ثم الضغط على الزر ليقوم <span style="line-height: 22.3999996185303px;">الخادوم</span> بعرض نفس النص ولكن في صفحة أخرى، كود الصفحة <span style="font-family:courier new,courier,monospace;">search.aspx</span>:
			</p>

			<div>
				<strong>كود ASP.net</strong>
			</div>

			<div>
				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:TextBox ID="TxtSearch" runat="server"&gt;&lt;/asp:TextBox&gt;
        &lt;br /&gt;
        &lt;asp:Button ID="BtnSearch" runat="server" Text="search" 

                    PostBackUrl="~/results.aspx" /&gt;
    &lt;/div&gt;
</pre>

				<p dir="rtl">
					ننتقل الآن إلى الصفحة <span style="font-family:courier new,courier,monospace;">results.aspx</span> ونضيف عليها فقط أداة <span style="font-family:courier new,courier,monospace;">Label</span> لنعرض فيها النص المدخل في الصفحة الأولى حيث يكون الكود كالتالي:
				</p>

				<p>
					<strong>كود ASP.net</strong>
				</p>

				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:Label ID="LblSearch" runat="server" Text="" /&gt;
    &lt;/div&gt;
</pre>

				<p dir="rtl">
					وفي حدث تحميل الصفحة نكتب الكود التالي:
				</p>

				<div>
					<strong style="line-height: 22.3999996185303px;">كود #C</strong>
				</div>

				<div>
					<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Page_Load(object sender، EventArgs e)
    {
        if (PreviousPage != null)
        {
            TextBox txtSearch = (TextBox)PreviousPage.FindControl("TxtSearch");
            LblSearch.Text = String.Format("Search for: {0}"، txtSearch.Text);
        }
    }
</pre>

					<p>
						<strong style="line-height: 22.3999996185303px;">كود VB</strong>
					</p>

					<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Page_Load(ByVal sender As Object، ByVal e As System.EventArgs)   
    Handles Me.Load 

        If PreviousPage IsNot Nothing Then 
            Dim txtSearch As TextBox = 
            DirectCast(PreviousPage.FindControl("TxtSearch")، TextBox) 
            LblSearch.Text = [String].Format("Search for: {0}"، txtSearch.Text) 
        End If 
    End Sub 
</pre>

					<p dir="rtl">
						<strong>تحليل الكود السابق</strong>: تستخدم الخاصية <span style="font-family:courier new,courier,monospace;">PreviousPage</span> للحصول على مؤشر للصفحة السابقة التي سببت نقلنا إلى هذه الصفحة، الطريقة <span style="font-family:courier new,courier,monospace;">FindControl</span> تعيد أداة تحكم محددة وبجميع خصائصها الحالية (ونحن نريد استرجاع قيمة الخاصية <span style="font-family:courier new,courier,monospace;">Text</span> منها) المتغير الذي تم تمريره هو <span style="font-family:courier new,courier,monospace;">Id</span> أداة التحكم المطلوبة، ننفذ الكود الصفحة <span style="font-family:courier new,courier,monospace;">search</span> وندخل نص ما ثم نضغط على الزر لنرى آلية عمل الكود والخاصية <span style="font-family:courier new,courier,monospace;">PostBackUrl</span> وكيف استطعنا الوصول لبيانات صفحة سابقة من صفحة تالية.
					</p>

					<div>
						<strong>ملاحظة:</strong> يوجد أساليب أكثر فاعلية لنقل البيانات بين صفحات الموقع مثل Cookies وSession وغيرهم وسنناقشهم بالتفصيل في دروس لاحقة إن شاء الله.
					</div>

					<div>
						<h2 dir="rtl">
							تحديد الزر الإفتراضي
						</h2>

						<p dir="rtl">
							تسمح هذه الخاصية يتحديد زر في الصفحة بحيث يتم تنفيذ الكود داخله بمجرد الضغط على مفتاح <span style="font-family:courier new,courier,monospace;">Enter</span> من لوحة المفاتيح ودون الحاجة للضغط على الزر من خلال الماوس، تدعى هذه الخاصية <span style="font-family:courier new,courier,monospace;">defaultButton</span> ويتم تحديدها كخاصية للنموذج.
						</p>

						<p dir="rtl">
							<strong>مثال</strong>: أنشئ صفحة جديدة، أضف عليها أداتي <span style="font-family:courier new,courier,monospace;">Button</span> وأداة <span style="font-family:courier new,courier,monospace;">Label</span> واحدة، في حدث النقر على الزر الأول اكتب الكود التالي:
						</p>

						<div>
							<strong style="line-height: 22.3999996185303px;">كود #C</strong>
						</div>

						<div>
							<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button1_Click(object sender، EventArgs e)
    {
        Label1.Text = "you click Button1 ";
    }
</pre>

							<p>
								<strong style="line-height: 22.3999996185303px;">كود VB</strong>
							</p>

							<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Button1_Click(ByVal sender As Object، ByVal e As 
    System.EventArgs) Handles Button1.Click 

        Label1.Text = "you click Button1 " 
    End Sub </pre>

							<p>
								وفي حدث النقر على الزر الثاني:
							</p>

							<p>
								<strong style="line-height: 22.3999996185303px;">كود #C</strong>
							</p>

							<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button2_Click(object sender، EventArgs e)
    {
        Label1.Text = "you click Button2 ";
    }
</pre>

							<p>
								 
							</p>

							<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Button2_Click(ByVal sender As Object، ByVal e As 
    System.EventArgs) Handles Button2.Click 

        Label1.Text = "you click Button2 " 
    End Sub 
</pre>

							<p dir="rtl">
								الآن نأتي إلى بيت القصيد وهي تحديد الخاصية <span style="font-family:courier new,courier,monospace;">defaultButton</span> التابعة للفورم وإعطائها كقيمة أحد الزرين السابقين كما في الكود التالي:
							</p>

							<div>
								<strong>كود ASP.net</strong>
							</div>

							<div>
								<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;form id="form1" runat="server" defaultbutton="Button2"&gt;
    &lt;div&gt;
        &lt;asp:Button ID="Button1" runat="server" Text="Button" 
                    onclick="Button1_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Button ID="Button2" runat="server" Text="Button" 
                    onclick="Button2_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text=""&gt;&lt;/asp:Label&gt;
    &lt;/div&gt;
    &lt;/form&gt;
</pre>

								<p dir="rtl">
									حيث تم تحديد <span style="font-family:courier new,courier,monospace;">Button2</span> كزر افتراضي، نفذ الصفحة واضغط على <span style="font-family:courier new,courier,monospace;">Enter</span> لترى مايحدث، أعد تنفيذ المثال بعد تعديل الخاصية السابقة وجعلها تساوي القيمة <span style="font-family:courier new,courier,monospace;">Button1</span>.
								</p>

								<div>
									<strong>ملاحظة</strong>: يمكن استخدام الخاصية <span style="font-family:courier new,courier,monospace;">defaultButton</span> مع أداة التحكم <span style="font-family:courier new,courier,monospace;">Panel</span>، سنتعرف على هذه الأداة بالتفصيل في دروس قادمة.
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>

			<h2 dir="rtl">
				معالجة الحدث Command
			</h2>

			<p dir="rtl">
				أدوات التحكم <span style="font-family:courier new,courier,monospace;">Buttons</span> بأنواعهم الثلاثة يدعمون الحدثين <span style="font-family:courier new,courier,monospace;">Click</span> و <span style="font-family:courier new,courier,monospace;">Command</span> كما رأينا سابقا ً، الفرق بين هذين الحدثين هو أنه عند العمل مع <span style="font-family:courier new,courier,monospace;">Command</span> فبإمكاننا تمرير اسم أمر ما و<span style="line-height: 22.3999996185303px; text-align: right;">متغير</span> للأمر أيضاً وهذه الأمور غير مدعومة مع الحدث <span style="font-family:courier new,courier,monospace;">Click</span>.
			</p>

			<p dir="rtl">
				<strong>مثال توضيحي</strong>: أنشئ صفحة جديدة، أضف عليها أداتي <span style="font-family:courier new,courier,monospace;">Button</span> وأداة <span style="font-family:courier new,courier,monospace;">Label</span> واحدة، أضف للأداتين <span style="font-family:courier new,courier,monospace;">Button</span> الخصائص <span style="font-family:courier new,courier,monospace;">onCommand</span> ،<span style="font-family:courier new,courier,monospace;">CommandName</span> ،<span style="font-family:courier new,courier,monospace;">CommandArgument</span> وفق التالي:
			</p>

			<div dir="rtl" style="">
				<table style="border:none;border-collapse:collapse">
<colgroup>
<col width="295">
<col width="295">
</colgroup>
<tbody>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">الخاصية</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">القيمة</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td colspan="2" dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height: 1.2; margin-top: 0pt; margin-bottom: 0pt; text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">الأداة Button1</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">onCommand</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">Button_Command</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">CommandName</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">Colors</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">CommandArgument</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">Red</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td colspan="2" dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">الأداة Button2</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">onCommand</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">Button_Command</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">CommandName</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">Colors</span></span>
								</p>
							</td>
						</tr>
<tr style="height:0px">
<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">CommandArgument</span></span>
								</p>
							</td>
							<td dir="ltr" style="border-left:solid #000000 1px;border-right:solid #000000 1px;border-bottom:solid #000000 1px;border-top:solid #000000 1px;vertical-align:top;padding:0px 8px 0px 8px">
								<p dir="rtl" style="line-height:1.2;margin-top:0pt;margin-bottom:0pt;text-align: center;">
									<span id="docs-internal-guid-3bfb2578-65b2-4649-8ca9-6786c2464654"><span style="font-size: 18.6666666666667px; font-family: Calibri; color: rgb(0, 0, 0); vertical-align: baseline; white-space: pre-wrap; background-color: transparent;">Blue</span></span>
								</p>
							</td>
						</tr>
</tbody>
</table>
<p>
					وبالتالي يصبح كود الصفحة:
				</p>
			</div>

			<div>
				<strong>كود ASP.net</strong>
			</div>

			<div>
				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:Button ID="Button1" runat="server" Text="Red" 
            oncommand="Button_Command" 
            CommandName="colors"
            CommandArgument="Red"/&gt;
        &lt;asp:Button ID="Button2" runat="server" Text="Blue" 
            oncommand="Button_Command"
            CommandName="colors"
            CommandArgument="Blue"/&gt;
        &lt;asp:Label ID="Label1" runat="server" Text=""&gt;&lt;/asp:Label&gt;
    &lt;/div&gt;
</pre>

				<p>
					نفتح ملف الكود الخلفي<span style="font-family:courier new,courier,monospace;"> Default.aspx.cs</span> ونكتب فيه الكود التالي:
				</p>

				<p>
					<strong style="line-height: 22.3999996185303px;">كود #C</strong>
				</p>

				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button_Command(object sender، CommandEventArgs e)
    {
        if (e.CommandName == "colors")
        {
            switch (e.CommandArgument.ToString())
            {
                case "Red":
                    Label1.Text = "RED";
                    break;
                case "Blue":
                    Label1.Text = "BLUE";
                    break;
            }
        }
    }
</pre>

				<p>
					<strong style="line-height: 22.3999996185303px;">كود VB</strong>
				</p>

				<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Button_Command(ByVal sender As Object، ByVal e As   
    CommandEventArgs) 

    If e.CommandName = "colors" Then 
        Select Case e.CommandArgument.ToString() 
            Case "Red" 
                Label1.Text = "RED" 
            Exit Select 
            Case "Blue" 
                Label1.Text = "BLUE" 
            Exit Select 
        End Select 
    End If  
    End Sub  
</pre>

				<p dir="rtl">
					لاحظ أن كلا الزرين يقوم باستدعاء نفس الكود <span style="font-family:courier new,courier,monospace;">Button_Commaen</span> مع تحديد <span style="font-family:courier new,courier,monospace;">CommandName</span> للقيمة <span style="font-family:courier new,courier,monospace;">colors</span> والإختلاف الوحيد بينهما هو بالمتغير المرر حيث إن الزر الأول يرسل المتغير <span style="font-family:courier new,courier,monospace;">Red</span> في حين أن الزر الثاني يرسل المتغير <span style="font-family:courier new,courier,monospace;">Blue</span>، نفذ الصفحة لترى نتيجة العمل، إن العمل مع الحدث <span style="font-family:courier new,courier,monospace;">Command</span> فعال عندما تؤدي مجموعة من الأزرار نفس الكود ولكن بمتغيرات مختلفة حيث يوفر علينا عناء إعادة كتابة الكود لو تم استخدام الحدث <span style="font-family:courier new,courier,monospace;">Click.</span>
				</p>

				<p dir="rtl">
					قمنا في هذا الدرس بالتعرف على ثلاثة أدوات لإرسال بيانات النموذج إلى الخادوم وهي <span style="font-family:courier new,courier,monospace;">Button</span> ،<span style="font-family:courier new,courier,monospace;">LinkButton</span> ،<span style="font-family:courier new,courier,monospace;">ImageButton</span> مع أمثلة لكل منها. سنتعرف في <a href="https://academy.hsoub.com/code/general/aspnet-%D8%B9%D8%B1%D8%B6-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-r125/" rel="">الدرس القادم</a> على أداتين جديدتين لعرض الصور في ASP.NET.
				</p>
			</div>
		</div>
	</div>
</div>
]]></description><guid isPermaLink="false">120</guid><pubDate>Mon, 06 Jul 2015 23:51:00 +0000</pubDate></item><item><title>ASP.NET: &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x623;&#x62F;&#x648;&#x627;&#x62A; &#x627;&#x644;&#x62A;&#x62D;&#x643;&#x645; &#x627;&#x644;&#x642;&#x64A;&#x627;&#x633;&#x64A;&#x629;</title><link>https://academy.hsoub.com/programming/c-sharp/dotnet/aspnet/aspnet-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A7%D9%84%D9%82%D9%8A%D8%A7%D8%B3%D9%8A%D8%A9-r114/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2017_06/asp_net.1.png.22f0f394566085b60070bfc643a0e8a5.png" /></p>

<p dir="rtl">
	هذا أول درس من سلسلة "<a href="https://academy.hsoub.com/search/?tags=%D9%85%D8%AF%D8%AE%D9%84+%D8%A5%D9%84%D9%89+asp.net" rel="">مدخل إلى ASP.net</a>"، والتي سنحاول من خلالها تقريب منصة العمل ASP.net الخاصة بشركة Microsoft إلى المبتدئين، وهي مفصلّة إلى دروس، كل درس يتكلم عن موضوع معين، في هذا الدرس (الأول) سنتعلم كيف نستخدم عناصر التحكم الأساسية المضمنة في منصة العمل ASP.NET والتي لابد منها لإنشاء تطبيقات الانترنت، حيث سنتعلم كيف نعرض المعلومات باستخدام الأداتين <span style="font-family:courier new,courier,monospace;">Label</span> ،<span style="font-family:courier new,courier,monospace;">Literal</span>، وكيف نقبل ونتعامل مع دخل المستخدم من خلال الأدوات <span style="font-family:courier new,courier,monospace;">TextBox </span>،<span style="font-family:courier new,courier,monospace;">CheckBox</span> ،<span style="font-family:courier new,courier,monospace;">RadioButton.</span>
</p>

<h2 dir="rtl">
	عرض المعلومات
</h2>

<p dir="rtl">
	منصة عمل ASP.NET تدعم أداتين لعرض البيانات النصية <span style="font-family:courier new,courier,monospace;">Label</span> ،<span style="font-family:courier new,courier,monospace;">Literal</span> ففي حين أن الأداة <span style="font-family:courier new,courier,monospace;">Literal</span> تعرض البيانات بأسلوب بسيط، فإن الأداة <span style="font-family:courier new,courier,monospace;">Label</span> تقدم العديد من المزايا والتنسيقات الإضافية.
</p>

<h3 dir="rtl">
	استخدام أداة التحكم Label
</h3>

<p dir="rtl">
	نستخدم أدوات عرض المعلومات حتى نتمكن من تعديل النص المعروض على الصفحة وقت التنفيذ حيث نستطيع ببساطة أن نحدد النص المراد عرضه من خلال إسناده للخاصية <span style="font-family:courier new,courier,monospace;">Text</span> لأداة <span style="font-family:courier new,courier,monospace;">Label</span>، كما يمكن أن نستخدم تنسيقات html لتقوم هذه الأداة بتفسيرهم وتوليد الخرج المطلوب، وبشكل افتراضي تقوم هذه الأداة بإحاطة النص بالوسم <span style="font-family:courier new,courier,monospace;">&lt;span&gt;</span>، في الكود التالي نعرض أساليب مختلفة لإسناد المعلومات لأدوات <span style="font-family:courier new,courier,monospace;">Label</span>:
</p>

<p dir="rtl">
	<strong>كود ASP.net</strong>
</p>

<div>
	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:Label ID="Label1" runat="server" Text="Hi i'm Label1" &gt;&lt;/asp:Label&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label2" runat="server" Text="Label"&gt;
        Hi i'm Label2
        &lt;/asp:Label&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label3" runat="server" Text="&lt;b&gt;&lt;i&gt;Hi i'm Label3&lt;/i&gt;&lt;/b&gt;"&gt;
        &lt;/asp:Label&gt;
    &lt;/div&gt;
</pre>

	<p dir="rtl">
		الأداة <span style="font-family:courier new,courier,monospace;">Label</span> تدعم العديد من الخصائص لتنسيق النصوص، نستعرض منها:
	</p>

	<ul dir="rtl">
<li>
			<strong>BackColor</strong>: تغيير لون الخلفية للأداة.
		</li>
		<li>
			<strong>BorderColor</strong>: تتعين لون لإطار يحيط بأداة <span style="font-family:courier new,courier,monospace;">Label</span>.
		</li>
		<li>
			<strong>BorderStyle</strong>: تحديد نمط الإطار الذي سيتم عرضه، يمكن أن تأخذ هذه الخاصية أحد القيم التالية: NotSet، None، Dotted، Dashed، Solid، Double، Groove، Ridge، Inset،، Outset.
		</li>
		<li>
			<strong>BorderWidth</strong>: تحديد ثخانة الإطار.
		</li>
		<li>
			<strong>CssClass</strong>: تحديد صف CSS يتم تطبيقه على هذه الأداة.
		</li>
		<li>
			<strong>Font</strong>: تحديد نوع الخط المستخدم.
		</li>
		<li>
			<strong>ForeColor</strong>: تحديد لون الخط.
		</li>
		<li>
			<strong>Style</strong>: لتطبيق تصميم معين على أداة <span style="font-family:courier new,courier,monospace;">Label</span>.
		</li>
		<li>
			<strong>ToolTip</strong>: نص يتم عرضه كتلميح عند مرور الماوس على أداة <span style="font-family:courier new,courier,monospace;">Label</span>.
		</li>
	</ul>
<p dir="rtl">
		عادة ما يتم استخدام الأداة <span style="font-family:courier new,courier,monospace;">Label</span> لعرض عناوين لأدوات أخرى لمساعدة المستخدم على القيام بعمله، وبالتالي فإن هذه الأداة تملك الخاصية <span style="font-family:courier new,courier,monospace;">AssociatedControlID</span> لتحديد الأداة المرتبطة بها وينصح باتسخدام هذه الخاصية بشكل عام.
	</p>

	<h3 dir="rtl">
		استخدام أداة التحكم Literal
	</h3>

	<p dir="rtl">
		تعمل هذه الأداة بشكل مشابه جدا لعمل الأداة <span style="font-family:courier new,courier,monospace;">Label</span> إلا أنها لاتقوم بإحاطة النص بالوسم <span style="font-family:courier new,courier,monospace;">&lt;span&gt; </span>وهذا ماقد نحتاجه في بعض المواقع التي لايمكن فيها ترجمة أكود html ( كتحديد عنوان الصفحة على المتصفح مثلا )، وبما أن هذه الأداة لاتدعم الوسم &lt;span&gt; فهي أيضا لاتدعم الخصائص التابعة له <span style="font-family:courier new,courier,monospace;">CssClass</span> ،<span style="font-family:courier new,courier,monospace;">BackColor</span>، الأداة <span style="font-family:courier new,courier,monospace;">Literal</span> تدعم خاصية هامة وغير مدعومة بالأداة <span style="font-family:courier new,courier,monospace;">Label</span> وهي الخاصية <span style="font-family:courier new,courier,monospace;">Mode</span> حيث يمكنها أن تأخذ أحد القيم الثلاث التالية:
	</p>

	<ul dir="rtl">
<li>
			<strong>PassThrough</strong>: تفسير رموز html الموجدوة في النص وعرض ماتعنيه.
		</li>
		<li>
			<strong>Encode</strong>: عرض النص بدون ترجمة رموز html حيث تظهر كما هي.
		</li>
		<li>
			<strong>Transform</strong>: يتم تفسير فقط الرموز المدعومة من قبل الجهاز الطالب للصفحة.
		</li>
	</ul>
<p>
		<strong>كود ASP.net</strong>
	</p>
</div>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:Literal ID="L1" runat="server" Mode="PassThrough" Text="&lt;hr /&gt;"/&gt;
        &lt;asp:Literal ID="L2" runat="server" Mode="Encode" Text="&lt;hr /&gt;"/&gt;
        &lt;asp:Literal ID="L3" runat="server" Mode="Transform" Text="&lt;hr /&gt;"/&gt;
    &lt;/div&gt;
</pre>

<p>
	 عند تنفيذ الصفحة السابقة تقوم <span style="font-family:courier new,courier,monospace;">Literal1</span> بعرض خط أفقي، <span style="font-family:courier new,courier,monospace;">Literal2</span> تعرض النص <span style="font-family:courier new,courier,monospace;">&lt;/hr&gt;</span> في حين أن <span style="font-family:courier new,courier,monospace;">Literal3</span> تفحص الجهاز الطالب للصفحة فإن كان يدعم هذا الوسم فإنه يعرض خط أفقي وإلا فسيتم عرض النص كما هو &lt;<span style="font-family:courier new,courier,monospace;">/ hr&gt;</span>.
</p>

<h2 dir="rtl">
	قبول دخل المستخدم
</h2>

<p dir="rtl">
	تتضمن منصة عمل ASP.NET أدوات تسمح للمستخدم بإدخال وتحديد اختياراته في الموقع، حيث تقدم ثلاث أدوات أساسية هي <span style="font-family:courier new,courier,monospace;">TextBox</span> ،<span style="font-family:courier new,courier,monospace;">CheckBox</span> ،<span style="font-family:courier new,courier,monospace;">RadioButton</span> و سنتعرف عليهم في الفقرات التالية بالتفصيل.
</p>

<h3 dir="rtl">
	استخدام أداة التحكم TextBox
</h3>

<p dir="rtl">
	تسمح هذه الأداة للمستخدم بإدخال نص وفقا ً لثلاثة أنماط تحددها قيمة الخاصية <span style="font-family:courier new,courier,monospace;">TextMode</span> وهم:
</p>

<ul dir="rtl">
<li>
		<strong>SingleLine</strong>: قبول الدخل كسطر واحد فقط.
	</li>
	<li>
		<strong>MultiLine</strong>: قبول الدخول بأسطر عديدة.
	</li>
	<li>
		<strong>Password</strong>: حيث يظهر دخل المستخدم كرموز ( نجوم *** أو غيره ).
	</li>
</ul>
<p>
	<strong>كود ASP.net</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:TextBox ID="TextBox1" runat="server" TextMode="SingleLine"/&gt;
        &lt;asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine" /&gt;
        &lt;asp:TextBox ID="TextBox3" runat="server" TextMode="Password" /&gt;
    &lt;/div&gt;
</pre>

<h4 dir="rtl">
	<strong>خصائص الأداة TextBox:</strong>
</h4>

<ul dir="rtl">
<li>
		<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة. 
	</li>
	<li>
		<strong>AutoCompleteType</strong>: تحديد نمط الإكمال التلقائي حيث يكفي أن يدخل المستخدم بضعة حروف حتى يتم إظهار كلمات مطابقة تم إدخالها مسبقاً، يمكن إلغاء تفعيل هذه الخاصية بإسناد القيمة Disabled لها.
	</li>
	<li>
		<strong>AutoPostBack</strong>: إرسال المحتويات إلى السيرفر بشكل فوري عند أي تغير بالنص المدخل.
	</li>
	<li>
		<strong>Columns</strong>: تحديد عدد الأعمدة التي ستظهر.
	</li>
	<li>
		<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
	</li>
	<li>
		<strong>MaxLength</strong>: تحديد العدد الأعظمي من المحارف التي يمكن إدخالها ( لاتعمل مع MulitLine).
	</li>
	<li>
		<strong>ReadOnly</strong>: لمنع المستخدم من تغيير القيمة الموجودة بـ <span style="font-family:courier new,courier,monospace;">TextBox</span>.
	</li>
	<li>
		<strong>Rows</strong>: تحديد عدد الأسطر التي ستظهر.
	</li>
	<li>
		<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
	</li>
	<li>
		<strong>Warp</strong>: لتحديد إمكانية الالتفاف التلقائي للنص مع النمط <span style="font-family:courier new,courier,monospace;">MultiLine</span>.
	</li>
</ul>
<p dir="rtl">
	أداة التحكم <span style="font-family:courier new,courier,monospace;">TextBox</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تدعم الحدث TextC<span style="font-family:courier new,courier,monospace;">h</span>anged والذي يُطلق عندما تتغير محتويات هذه الأداة.
</p>

<p dir="rtl">
	لتوضيح آلية عمل الخاصية  <span style="font-family:courier new,courier,monospace;">AutoPostBack</span> أنشئ صفحة جديدة أضف لها <span style="font-family:courier new,courier,monospace;">TextBox1</span> وأعطي الخاصية السابقة القيمة <span style="font-family:courier new,courier,monospace;">True</span> ثم أضف <span style="font-family:courier new,courier,monospace;">Lable1</span> ماسنقوم به هو أنه عند كتابة نص ما فإنه سيعرض في الأداة <span style="font-family:courier new,courier,monospace;">Label1</span> بمجرد نقل التركيز خارج <span style="font-family:courier new,courier,monospace;">TextBox1</span> وهو دليل على عمل <span style="font-family:courier new,courier,monospace;">postBack</span> آلي للصفحة، أي إرسالها للسيرفر وإعادة النتائج:
</p>

<div>
	<strong>كود ASP.net</strong>
</div>

<div>
	<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
        &lt;asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" 
            ontextchanged="TextBox1_TextChanged"&gt;&lt;/asp:TextBox&gt;
        &lt;asp:Label ID="Label1" runat="server" Text="Label"&gt;&lt;/asp:Label&gt;
    &lt;/div&gt;
</pre>

	<p dir="rtl">
		في الحدث <span style="font-family:courier new,courier,monospace;">TextChanged</span> الخاص بالأداة <span style="font-family:courier new,courier,monospace;">TextBox1</span> اكتب الكود التالي:
	</p>

	<div>
		<strong>كود </strong><strong style="line-height: 22.3999996185303px;">#</strong><strong>C</strong>
	</div>
</div>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Label1.Text = TextBox1.Text;
    }
</pre>

<p>
	<strong>كود VB</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As
    System.EventArgs) Handles TextBox1.TextChanged

        Label1.Text = TextBox1.Text
    End Sub
</pre>

<p dir="rtl">
	نفذ الصفحة واكتب ماتريد في <span style="font-family:courier new,courier,monospace;">TextBox1</span> ثم اضغط على المفتاح <span style="font-family:courier new,courier,monospace;">Tab</span> من لوحة المفاتيح وشاهد النتيجة، أغلق المستعرض ثم أعد التنفيذ مرة أخرى وقم بكتابة أول حرف من القيمة التي أدخلتها بالتنفيذ الأول لترى كيف تتم عملية الإكمال التلقائي، ألغي تفعيل خاصية الإكمال التلقائي كما هو موضح بالأعلى ثم أعد التنفيذ وأعد كتابة نفس الكلمة لتلاحظ توقف عمل الإكمال التلقائي.
</p>

<h3 dir="rtl">
	استخدام أداة التحكم CheckBox
</h3>

<p dir="rtl">
	تسمح هذه الأداة للمستخدم أن يحدد قبوله أو رفضه لأمر ما، أي أنها تعتبر كسؤال يطرح على المستخدم والإجابة حتما ً إما نعم أو لا، مثلا موقع فيسبوك يسألنا إن كنا نريد استقبال رسائل على بريدنا الإلكتروني أم لا، حيث إن الخاصية Checked هي التي تمكننا من معرفة خيار المستخدم كما سنرى بعد قليل.
</p>

<h4 dir="rtl">
	<strong>خصائص أداة التحكم CheckBox:</strong>
</h4>

<ul dir="rtl">
<li>
		<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة.
	</li>
	<li>
		<strong>AutoPostBack</strong>: إرسال خيار التحديد إلى السيرفر بشكل فوري عند أي تغير بحالته.
	</li>
	<li>
		<strong>Checked</strong>: تعود بـ <span style="font-family:courier new,courier,monospace;">True</span> أو <span style="font-family:courier new,courier,monospace;">False</span> بحسب قبول المستخدم أو رفضه.
	</li>
	<li>
		<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
	</li>
	<li>
		<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
	</li>
	<li>
		<strong>Text</strong>: تحديد النص الذي يظهر بجانب هذه الأداة ( السؤال المطروح ).
	</li>
	<li>
		<strong>TextAlign</strong>: موضع النص بالنسبة للأداة، على يمينها أم يسارها تأخذ إحدى القيمتين <span style="font-family:courier new,courier,monospace;">Left</span> ،<span style="font-family:courier new,courier,monospace;">Right.</span>
	</li>
</ul>
<p dir="rtl">
	أداة التحكم <span style="font-family:courier new,courier,monospace;">CheckBox</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تُطلق الحدث <span style="font-family:courier new,courier,monospace;">CheckedChanged</span> عند تغيير المستخدم لخياره سواءاً بالرفض أو القبول.
</p>

<p dir="rtl">
	<strong>مثال بسيط</strong>: أنشئ صفحة جديدة أضف لها الأدوات <span style="font-family:courier new,courier,monospace;">CheckBox1 </span>،<span style="font-family:courier new,courier,monospace;">Button1</span> ،<span style="font-family:courier new,courier,monospace;">Label1</span> أنقر على الزر <span style="font-family:courier new,courier,monospace;">Button1</span> مرتين واكتب الكود التالي:
</p>

<div>
	<strong style="line-height: 22.3999996185303px;">كود </strong><strong style="line-height: 22.3999996185303px;">#</strong><strong style="line-height: 22.3999996185303px;">C</strong>
</div>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = CheckBox1.Checked.ToString();
    }
</pre>

<p>
	<strong style="line-height: 22.3999996185303px;">كود VB</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
   Protected Sub Button1_Click1(ByVal sender As Object، ByVal e As  
    System.EventArgs) Handles Button1.Click 

        Label1.Text = CheckBox1.Checked.ToString() 
    End Sub 
</pre>

<p dir="rtl">
	نفذ وقم تحديد خيار <span style="font-family:courier new,courier,monospace;">CheckBox</span> ثم اضغط على الزر، سترى أن الخاصية <span style="font-family:courier new,courier,monospace;">Checked</span> أعادت <span style="font-family:courier new,courier,monospace;">True</span>، ألغي تفعيل الخيار واضغط على الزر مرة أخرى. ماهي النتيجة الآن ؟
</p>

<p>
	كود الصفحة بعد إجراء تعديلات بسيطة بالخصائص كالتالي:
</p>

<p>
	<strong>كود ASP.net</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
&lt;div&gt;
        &lt;asp:CheckBox ID="CheckBox1" runat="server" Text="استقبال رسائل على الجوال ؟  "
                      TextAlign="Left"/&gt;&lt;br /&gt;
        &lt;asp:Button ID="Button1" runat="server" Text=" ok "
                    onclick="Button1_Click" /&gt;&lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text="" /&gt;
    &lt;/div&gt;
</pre>

<p>
	<strong>ملاحظة</strong>: منصة عمل ASP.Net تدعم الأداة <span style="font-family:courier new,courier,monospace;">CheckBoxList</span> والتي تتيح إماكانية عمل قائمة عناصرها عبارة عن أدوات <span style="font-family:courier new,courier,monospace;">CheckBox</span> كما سنرى في درس لاحق.
</p>

<h3 dir="rtl">
	استخدام أداة التحكم RadioButton
</h3>

<p dir="rtl">
	لا تظهر هذه الأداة منفردة لوحدها إنما تكون دائما ً ضمن مجموعة حيث بإمكان المستخدم تحديد خيار واحد فقط من ضمن أدوات مجموعة ما.
</p>

<h4 dir="rtl">
	<strong>خصائص أداة التحكم RadioButton:</strong>
</h4>

<ul dir="rtl">
<li>
		<strong>AccessKey</strong>: لتحديد مفتاح من لوحة المفاتيح عند الضغط عليه يتم نقل التركيز لهذه الأداة.
	</li>
	<li>
		<strong>AutoPostBack</strong>: إرسال خيار التحديد إلى السيرفر بشكل فوري عند أي تغير بحالته.
	</li>
	<li>
		<strong>Checked</strong>: تعود بـ <span style="font-family:courier new,courier,monospace;">True</span> أو <span style="font-family:courier new,courier,monospace;">False</span> بحسب قبول المستخدم أو رفضه.
	</li>
	<li>
		<strong>Enabled</strong>: تفعيل أو إلغاء تفعيل هذه الأداة.
	</li>
	<li>
		<strong>GroupName</strong>: لضم أداة <span style="font-family:courier new,courier,monospace;">RadioButton</span> إلى مجموعة، من كل مجموعة لايمكن تحديد سوى خيار واحد فقط من أدوات <span style="font-family:courier new,courier,monospace;">RadionButton</span> الموجودة فيها.
	</li>
	<li>
		<strong>TabIndex</strong>: تحديد رقم يدل على ترتيب الوصول لهذه الأداة عبر مفتاح <span style="font-family:courier new,courier,monospace;">Tab</span>.
	</li>
	<li>
		<strong>Text</strong>: تحديد النص الذي يظهر بجانب هذه الأداة ( الخيار المطروح ).
	</li>
	<li>
		<strong>TextAlign</strong>: موضع النص بالنسبة للأداة، على يمينها أم يسارها تأخذ إحدى القيمتين <span style="font-family:courier new,courier,monospace;">Left</span> ،<span style="font-family:courier new,courier,monospace;">Right.</span>
	</li>
</ul>
<p dir="rtl">
	أداة التحكم <span style="font-family:courier new,courier,monospace;">RadioButton</span> تدعم الطريقة <span style="font-family:courier new,courier,monospace;">Focus</span> التي تسمح بوضع التركيز عليها عند التنفيذ، كما أنها تُطلق الحدث <span style="font-family:courier new,courier,monospace;">CheckedChanged</span> عند تغيير المستخدم لخياره.
</p>

<p>
	سنقوم بالمثال التالي بعرض بسيط لكيفية عمل هذه الأداة، أنشئ صفحة جديدة أضف عليها الأدوات التالية: <span style="font-family:courier new,courier,monospace;">RadioButton</span> عدد 3، <span style="font-family:courier new,courier,monospace;">button </span>،<span style="font-family:courier new,courier,monospace;">Label</span>، نعدل الخاصية <span style="font-family:courier new,courier,monospace;">Text</span> لأدوات <span style="font-family:courier new,courier,monospace;">RadioButton</span> بحيث تعرض كل أداة لون معين، كما يجب ( وهذا هام جدا) أن تأخذ الأدوات الثلاث السابقة نفس قيمة الـ <span style="font-family:courier new,courier,monospace;">GroupName</span>، نضغط على الزر مرتين ونكتب الكود التالي:
</p>

<p>
	<strong style="line-height: 22.3999996185303px;">كود </strong><strong style="line-height: 22.3999996185303px;">#</strong><strong style="line-height: 22.3999996185303px;">C</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    protected void Button1_Click(object sender, EventArgs e)
    {
        string color = "";
        if (RadioButton1.Checked)
            color = RadioButton1.Text;
        if (RadioButton2.Checked)
            color = RadioButton2.Text;
        if (RadioButton3.Checked)
            color = RadioButton3.Text;
        Label1.Text = "Your Favorite color is: " + color;
    }
</pre>

<p>
	<strong style="line-height: 22.3999996185303px;">كود VB</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As 
    System.EventArgs) Handles Button1.Click

        Dim color As String = ""
        If RadioButton1.Checked Then
            color = RadioButton1.Text
        End If
        If RadioButton2.Checked Then
            color = RadioButton2.Text
        End If
        If RadioButton3.Checked Then
            color = RadioButton3.Text
        End If
        Label1.Text = "Your Favorite color is: " + color
    End Sub
</pre>

<p>
	أما كود الصفحة فهو كالتالي:
</p>

<p>
	<strong>كود ASP.net</strong>
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">
    &lt;div&gt;
    Favorite color ?&lt;br /&gt;
        &lt;asp:RadioButton ID="RadioButton1" runat="server" Text="Red" 
            GroupName="colors"/&gt;&lt;br /&gt;
        &lt;asp:RadioButton ID="RadioButton2" runat="server" Text="Green" 
            GroupName="colors"/&gt;&lt;br /&gt;
        &lt;asp:RadioButton ID="RadioButton3" runat="server" Text="Blue" 
            GroupName="colors"/&gt;&lt;br /&gt;
        &lt;asp:Button ID="Button1" runat="server" Text=" ok " 
                    onclick="Button1_Click" /&gt;
        &lt;br /&gt;
        &lt;asp:Label ID="Label1" runat="server" Text=""/&gt;
    &lt;/div&gt;
</pre>

<p dir="rtl">
	قم بحذف الخاصية <span style="font-family:courier new,courier,monospace;">GroupName</span> من الكود السابق ونفذ وجرب أن تختار أكثر من لون.
</p>

<div>
	<p>
		<strong>ملاحظة</strong>:  <span style="line-height: 1.6;">منصة عمل ASP.Net تدعم الأداة <span style="font-family:courier new,courier,monospace;">RadioButtonList</span> والتي تتيح إماكانية عمل قائمة عناصرها عبارة عن أدوات <span style="font-family:courier new,courier,monospace;">RadioButton</span> كما سنرى في درس لاحق.</span>
	</p>

	<p>
		<span style="line-height: 1.6;">بهذا نكون قد وصلنا إلى نهاية الدرس الأول. سنتطرق في <a href="https://academy.hsoub.com/code/general/aspnet-%D8%A5%D8%B1%D8%B3%D8%A7%D9%84-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-r120/" rel="">الدرس القادم</a> إلى</span><span style="line-height: 22.3999996185303px;"> كيفية إرسال بيانات النماذج إلى الخادوم </span><span style="line-height: 22.3999996185303px;">بواسطة أدوات الأزرار المتنوعة.</span>
	</p>
</div>
]]></description><guid isPermaLink="false">114</guid><pubDate>Sat, 04 Jul 2015 01:48:00 +0000</pubDate></item></channel></rss>
