PDA

View Full Version : آموزش: نحوه ساخت DLL واستفاده از آن



saeedgharedaghi
دوشنبه 17 مرداد 1390, 20:30 عصر
می خواهیم یک Dll ایجاد کنیم که با گرفتن یک DataTable حرکت بین رکوردها بین رکوردها (ابتدا-بعدی-قبلی-انتها) را مدیریت کند، برای این منظور میتوان مانند ذیل عمل نمود،
یک پروژه به نام Windows Control Library با نام ControlNavigator ایجاد کرده و سپس یک UserControl با نام ControlNavigator ایجاد نمود و 4 کنترل Button با نام های cmdNextRecord ، cmdFirstRecord ، cmdPrivRecord، cmdLastRecord و یک Lable با نام lblNavigators به آن اضافه کرده و کد ذیل را به آن اضافه میکنیم :



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace ControNavigator
{
public partial class ControlNavigator : UserControl
{
public ControlNavigator()
{
InitializeComponent();
}

private CurrencyManager objCurrManager;

public CurrencyManager DataSource
{
get { return objCurrManager; }
set { objCurrManager = value; SetStatus(); }
}

////////////////////////////////////
private void SetStatus()
{
if (DataSource != null)
{
lblRegistors.Text = Convert.ToString(objCurrManager.Position + 1) + "==>" + Convert.ToString(objCurrManager.Count);
}
}

////////////////////////////////////
private void cmdNextRecord_Click(object sender, EventArgs e)
{
NextRecord();
}
private void NextRecord()
{
if (objCurrManager.Position < objCurrManager.Count)
{
objCurrManager.Position++;
SetStatus();
}
}

////////////////////////////////////
private void cmPrivRecord_Click(object sender, EventArgs e)
{
PrivRecord();
}
private void PrivRecord()
{
if (objCurrManager.Position > 0)
{
objCurrManager.Position--;
SetStatus();
}
}

////////////////////////////////////
private void cmdFirstRecord_Click(object sender, EventArgs e)
{
FirstRecord();
}
private void FirstRecord()
{
objCurrManager.Position = 0;
SetStatus();
}

////////////////////////////////////
private void cmdLastRecord_Click(object sender, EventArgs e)
{
LastRecord();
}
private void LastRecord()
{
objCurrManager.Position = objCurrManager.Count - 1;
SetStatus();
}

////////////////////////////////////
private void ControlNavigator_Load(object sender, EventArgs e)
{
lblRegistors.BorderStyle = BorderStyle.FixedSingle;
lblRegistors.TextAlign = ContentAlignment.MiddleCenter;
cmdFirstRecord.Text = "<<";
cmdLastRecord.Text = ">>";
cmdPrivRecord.Text = "<";
cmdNextRecord.Text = ">";
}
}
}







حال پس از اتمام برنامه نویسی ، برای ساخت Dll مورد نظرباید از منوی Build آیتم Buid Solution( اونایی که تنبلن F6 بزنن)را انتخاب کرده، پس اتمام کار یک فایل Dll با نام ControlNavigator ایجاد میگردد که میتوان آنرا در فرم های خود به کار برد.

حالا یک پرژه Windows Application ایجاد کرده و به Form1 دو TextBox به نام های txtCode ، txtName و دو Label به نام های lblCode و lblName و یک ControlNavigator(همون Dll) با نام ControlNavigator1 وکد ذیل را به آن اضافه میکنیم:

توجه : برای اضافه کردن Dll روی ToolBox کلیک راست کنید و بعد گزینه Choose Items رو بزنید و بعد در زبانه .Net FrameWork Components روی Browse کلیک کنید وبعد به مسیر پروژه Dll رفته و بعد از پوشه Bin ؛ پوشه Debug دی ال ال مورد نظر را کلیک کنید.و بعد ok رو زحمت بکشید بزنید.حالا dll به نوار toolbox اضافه شده، حالا بازم زحمت میکشید اونو درگ میکنید روی فرم.



private void Form1_Load(object sender, EventArgs e)
{
lblCode.Text = "کد";
lblName.Text = "نام";
txtCode.Text = "";
txtName.Text = "";
txtCode.TextAlign = HorizontalAlignment.Right;
txtCode.TextAlign = HorizontalAlignment.Right;
string strcon = "data source=SAEED-PC\\SQLEXPRESS;initial catalog=AccountDb;integrated security=true";
using (SqlConnection con = new SqlConnection(strcon))
{
using (SqlDataAdapter da = new SqlDataAdapter("select * from Acc_Group", con))
{
DataSet ds = new DataSet();
try
{
da.Fill(ds, "Group");
txtCode.DataBindings.Add("text", ds.Tables[0], "Code_G");
txtName.DataBindings.Add("text", ds.Tables[0], "Name_G");
controlNavigator1.DataSource = ((CurrencyManager)BindingContext[ds.Tables[0]]);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
}
}