0

Introduction to data handling in ASP.NET

1. Tao Ket noi voi database:

SqlConnection sqlconStudentData;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            sqlconStudentData = new SqlConnection(WebConfigurationManager.ConnectionStrings["StudentDataConnectionString"].ConnectionString);
            sqlconStudentData.Open();
        }
    }
2. Thu xem ket noi co thanh cong khong:

protected void btnConnect_Click(object sender, EventArgs e)
    {
        Controls.Clear();
        Response.Write("The database connection is successfully established.<br />");

        Response.Write("<strong>ConnectionString Name: </strong>" + WebConfigurationManager.
            ConnectionStrings["StudentDataConnectionString"].Name + "<br />");

        Response.Write("<strong>Provider Name: </strong>" + WebConfigurationManager.
            ConnectionStrings["StudentDataConnectionString"].ProviderName + "<br />");

        Response.Write("<strong>Total ConnectionString: </strong>" + WebConfigurationManager.
            ConnectionStrings.Count + "<br />");
    }
Link download : https://www.mediafire.com/?kuu8x2giksco31a
0

Data Source Controls In ASP.Net

I. Workshop 4-1
1. Ket noi voi du lieu XML:
Them moi 1 file XML vao trong website nhu sau:

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
      <description>After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.</description>
   </book>
   <book id="bk104">
      <author>Corets, Eva</author>
      <title>Oberon's Legacy</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-03-10</publish_date>
      <description>In post-apocalypse England, the mysterious 
      agent known only as Oberon helps to create a new life 
      for the inhabitants of London. Sequel to Maeve 
      Ascendant.</description>
   </book>
</catalog>

2. Keo TreeView va ket noi voi XML file qua XMLDataSource
Keo XMLDataSource va configure lai nhu sau:


3. Configure lai TreeView de no ket noi voi XMLDataSource
Add nhung dong muon hien thi bang cach configure lai column cua Tree View nhu sau:


sua lai cot TextField  thanh id cho book. 3 cai con lai configre TextField thanh innertext
Chay Trang:

II. Workshop 4-2
1. Tao 1 file sitemap nhu sau
<siteMap>
  <siteMapNode title="Home" description="Home" url="~/default.aspx">
    <siteMapNode title="Products" description="Our products"
      url="~/Products.aspx">
      <siteMapNode title="Hardware" description="Hardware choices"
        url="~/Hardware.aspx" />
      <siteMapNode title="Software" description="Software choices"
        url="~/Software.aspx" />
    </siteMapNode>
    <siteMapNode title="Services" description="Services we offer"
        url="~/Services.aspx">
        <siteMapNode title="Training" description="Training classes"
          url="~/Training.aspx" />
        <siteMapNode title="Consulting" description="Consulting services" 
          url="~/Consulting.aspx" />
        <siteMapNode title="Support" description="Supports plans" 
          url="~/Support.aspx" />
    </siteMapNode>
  </siteMapNode>
</siteMap>

2. Keo SiteMapDataSource va Menu vao roi configure Menu nhu sau:
Sua StaticDisplayLevels property cua Menu thanh 3 va chay trang
 Link download 2 bai: https://www.mediafire.com/?kyy5107791o9wtk

0

More on database handling

I. WorkShop 3-1
1. Keo DetailsView vao trang vao ket noi voi database

sqlconCelinaBatteries = new SqlConnection("Data Source=HOANFLONG-PC\\SQLEXPRESS;Initial Catalog=CelinaBatteries;Persist Security Info=True;User ID=gc0806;Password=gc123456");
        if (!Page.IsPostBack)
        {
            panProductDetails.Visible = false;
            lblStatus.Text = "";

            sqlcomProducts = new SqlCommand("SELECT * FROM Products", sqlconCelinaBatteries);
            if (sqlconCelinaBatteries.State == ConnectionState.Open)
                sqlconCelinaBatteries.Close();
            sqlconCelinaBatteries.Open();

            sqldaProducts = sqlcomProducts.ExecuteReader();
            ddlProductList.DataSource = sqldaProducts;
            ddlProductList.DataTextField = "ProductName";
            ddlProductList.DataBind();
            sqlconCelinaBatteries.Close();

        }

2. Lay du lieu tu database vao DetailsView: Keo 1 nut co title la show details roi tao event cho no:


event cho show details:

panProductDetails.Visible = true;
        lblStatus.Text = "";
        txtQuantity.Text = "0";

        sqlcomProducts = new SqlCommand("SELECT * FROM Products where ProductName='" + ddlProductList.Text + "'", sqlconCelinaBatteries);
        if (sqlconCelinaBatteries.State == ConnectionState.Open)
            sqlconCelinaBatteries.Close();
        sqlconCelinaBatteries.Open();

        sqldaProducts = sqlcomProducts.ExecuteReader();
        dvProducDetails.DataSource = sqldaProducts;
        dvProducDetails.DataBind();
        sqlconCelinaBatteries.Close();
        flag = true;
3. update database qua DetailsView bang cachs mua hang:

Event cho nut Buy
 if (flag == true)
        {
            string id = "";
            string name = "";
            double price = 0;
            int quantity = 0;

            sqlcomProducts = new SqlCommand("SELECT * FROM Products where ProductName='" + ddlProductList.Text + "'", sqlconCelinaBatteries);
            if (sqlconCelinaBatteries.State == ConnectionState.Open)
                sqlconCelinaBatteries.Close();
            sqlconCelinaBatteries.Open();

            sqldaProducts = sqlcomProducts.ExecuteReader();

            if (sqldaProducts.Read())
            {
                id = sqldaProducts.GetString(0);
                name = sqldaProducts.GetString(1);
                price = sqldaProducts.GetDouble(4);

                try
                {
                    quantity = Convert.ToInt32(txtQuantity.Text);
                    Response.Redirect("BillInfo.aspx?id=" + id + "&name=" + name + "&price=" + price + "&quantity=" + txtQuantity.Text);
                    flag = false;
                }
                catch (Exception ex)
                {
                    lblStatus.Text = "Please enter quantity.";
                    
                }
                sqldaProducts.Close();
            }
        }

5. Trang BillInfo dung de hien thi noi dung mua hang:

lblProducID.Text = Request.QueryString["id"].ToString();
        lblName.Text = Request.QueryString["name"].ToString();
        lblTotal.Text = "$ " + (Convert.ToInt32(Request.QueryString["quantity"].ToString()) * Convert.ToDouble(Request.QueryString["price"].ToString())).ToString();

Link download: https://www.mediafire.com/?jzz9i43iie3efnp

I. WorkShop 3-2

1. Ket noi voi database:

 sqlconKnightUniversity = new SqlConnection("Data Source=HOANGLONG-PC\\SQLEXPRESS;Initial Catalog=KnightUniversity;Persist Security Info=True;User ID=gc0806;Password=gc123456");
        if (!Page.IsPostBack)
        {
            sqlcomStudents = new SqlCommand("select * from Students", sqlconKnightUniversity);
            sqlconKnightUniversity.Open();
            SqlDataReader sqldaStudents = sqlcomStudents.ExecuteReader();

            while (sqldaStudents.Read())
            {
                ddlStudents.Items.Add(sqldaStudents.GetString(1));
                
            }
            sqlconKnightUniversity.Close();
2. Lay du lieu kieu XML tu database ra trang

sqlcomStudents = new SqlCommand("SELECT * FROM Students", sqlconKnightUniversity);
        sqlconKnightUniversity.Open();
        SqlDataReader sqldr = sqlcomStudents.ExecuteReader();

        while(sqldr.Read())
        {
            if (sqldr.GetString(1) == ddlStudents.Text)
            {
                SqlXml sx = sqldr.GetSqlXml(2);
                XmlReader xr = sx.CreateReader();

                lblID.Text = sqldr.GetString(0);
                lblName.Text = sqldr.GetString(1);

                while (xr.Read())
                {
                    if (xr.IsStartElement("Age"))
                    {
                        lblAge.Text = xr.ReadString();
                    }
                    if (xr.IsStartElement("City"))
                    {
                        lblCity.Text = xr.ReadString();
                    }
                    if (xr.IsStartElement("Picture"))
                    {
                        imgPhoto.ImageUrl = xr.ReadString();
                    }
                }
            }
        }
        sqlconKnightUniversity.Close();

Link: https://www.mediafire.com/?w4gaur68zr27qj0
0

Data Bound Controls

+ Tao LINQ to SQL vào project













+ Add bảng vào trong datacontext















+ Kéo LINQDATASOURCE control vào rồi chọn đến datacontext vừa mới tạo phía trên và tủy chỉnh














+ Kéo GridView vào và set Choose data source thành linqdatasource1. Enable Delete, Edit để có khả năng sửa xóa












+ Chức năng tìm kiếm: Kéo 1 textbox vào trang rồi tạo event TextChange:


0

Basic Web Server Controls

Workshop 5a : Abacus Systems
  • Giao diện :
  • Sau khi điền đầy đủ thông tin và ấn nút Submit :
Workshop 5b : Popular Book Gallery
  • Giao diện List book :
  • Sau khi ấn vào Beginning ASP.NET :
  • Ấn back và chọn ASP.NET 2.0
Link download : https://www.mediafire.com/?5ajxagdonuf58ap
0

Request , response and server Objects

Workshop 4a : Stationary Mart
  • Giao diện : 
  • Sau khi điền thông tin đầy đủ và ấn nút Submit :
Workshop 4b : Ventura Solutions
  • Giao diên :
  • Ấn vào server information sẽ hiện ra như sau :
Link download : https://www.mediafire.com/?5ajxagdonuf58ap
0

Basic of ASP.NET

Workshop 3a : Knowledge Online Library
  • Giao diện ban đầu :
  • Khi ấn vào nút Register :
  • Điền đầy đủ thông tin và ấn vào nút Submit :
Workshop 3b : Acmey Travels
  • Giao diện ban đầu :
  • Sau khi đăng nhập đầy đủ thông tin và ấn vào nút Submit :
Link download : https://www.mediafire.com/?6ldrjppdalor2g4
0

ADO.NET

Giao diện:



Các bước để kết nối với database (Giả sử đã có sẵn database AdventureWorks2012 trong SQL server)
Type đoạn code sau vào hàm khởi tạo để mở kết nối với database:
            string connectionString = "Data Source=HOANGLONG\\HL-                  PC;Database=AdventureWorks2012 ;Integrated Security=SSPI";
            sqlconProductDetails = new SqlConnection(connectionString);
            sqlcomProductDetails = new SqlCommand();

Khi chạy chúng ta sẽ gọi phương thúc load form trước(tạo event load_form cho form trên):
                        try
            {
                ClearControls();
                // gọi phương thức ClearControl để xóa các controls khác nhau trong form.
                if (sqlconProductDetails.State==ConnectionState.Open)
                    // kiểm tra xem kết nối tới cơ sở dữ liệu SQL Server có mở k  nếu như đã mở thì sẽ đóng lại
                    // Kiểu như refresh 
                {
                    sqlconProductDetails.Close();
                }
                sqlconProductDetails.Open();
                sqlcomProductDetails.CommandText = "select * from tblProductDetails";
                // SQLCommand sẽ gọi câu lệnh select thông qua CommandText
                sqlcomProductDetails.Connection = sqlconProductDetails;
                // gán command kết nối tới SQlConnection đang có 
                sqldreaderProductDetails = sqlcomProductDetails.ExecuteReader();
                 // SqlDataReader , đọc những thứ gì mà SqlCommand đã select ra 
                if (sqldreaderProductDetails.HasRows)
                    // Kiểm tra xem SQLDataReader có đọc được dòng nào k
                {
                    sqldreaderProductDetails.Read();
                    // Nếu có thì nó sẽ đọc bản ghi đầu tiên trong list
                    DisplayResult();
                    // gán dữ liệu đọc được vào textbox
                    if (sqldreaderProductDetails.Read())
                        // Nếu có nhiều bản ghi trong list
                    {
                        btnNext1.Enabled = true; 
                        btnNext2.Enabled = true;
                        // Sẽ cho 2 nút Next hiện 
                        rowNumber = rowNumber + 1;
                        // tăng số dòng lên 1
                        btnBack1_Click(null, null);
                    }
                    else
                    {
                        btnNext1.Enabled = false;
                        btnNext2.Enabled = false;
                        btnBack1.Enabled = false;
                        btnBack2.Enabled = false;
                        // Nếu như không có dữ liệu trong db thì các nút next và back sẽ bị ẩn đi 
                    }
                    btnEdit.Enabled = true;
                    btnDelete.Enabled = true;
                    // Nếu có dữ liệu thì nút Edit và Delete sẽ được bật lên
                }
                else
                {
                    DisableButtons();  // Nếu như lúc mở form chưa có dữ liệu thì tất cả các nút sẽ bị ẩn đi
                }
                btnCancel.Enabled = false;
                btnSave.Enabled = false;
                btnAddnew.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem while connecting to database", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sqlconProductDetails.Close();
                // Khi có lỗi sẽ đóng kết nối với db
                txtBuiltyear.Text = ex.ToString();
            }

Button Next, Previous có nhiệm vụ mở thông tin của sản phẩm tiếp theo hoặc sau đó.
Button Next có event Click sẽ đưa ra sản phẩm tiếp theo, khi đến sản phẩm cuối cùng thì sẽ set Enabled Property của button này thành false:

             if (sqldreaderProductDetails.Read())  // Kiểm tra xem có dữ liệu k
            {
                // Nếu có thì số dòng + 1 và phương thức DisplayResult được gọi để hiển thị bản ghi 
                rowNumber += rowNumber; 
                DisplayResult();
            }
            else
            {
                // Nếu như không có bản thì sẽ thông báo và sẽ ẩn 2 nút next 
                MessageBox.Show("This is the last record", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnNext1.Enabled = false;
                btnNext2.Enabled = false;
            }
            // Hiển thị 2 nút back
            btnBack1.Enabled = true;
            btnBack2.Enabled = true;

Button Xem bản ghi cuối cùng có event Click có nhiệm vụ xem bản ghi cuối cùng của bảng sản phẩm. Khi đó, button Next sẽ bị set Properties Enabled thành false:
                if (!sqldreaderProductDetails.IsClosed) // kiểm tra xem SqlDataReader có mở không
            {
                sqldreaderProductDetails.Close();
                // Nếu như có sẽ bị đóng lại
            }
            sqldreaderProductDetails = sqlcomProductDetails.ExecuteReader();
            // SqlDataReader (off) sẽ đọc bản ghi đầu tiên khi mà CommandText select
            if (rowNumber!=0) // Nếu như số dòng khác 0 
            {
                // thì nó sẽ gán số dòng về 0 và hiển thị bản ghi
                sqldreaderProductDetails.Read();
                DisplayResult();
                rowNumber = 0;
            }
            else
            {
                MessageBox.Show("This is the first record", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Information);
                sqldreaderProductDetails.Read();
            }
            btnBack2.Enabled = false;
            btnBack1.Enabled = false;
            btnNext1.Enabled = true;
            btnNext2.Enabled = true;
0

MDI Application


1. Giao diện
Kéo component MenuStrip vào form. Click vào ô Collection trong Properties của MenuStrip và thêm vào 4 sub-menus là Forms, Report, Help, Exit như sau:


Submenu Customer Details có event Click với nhiệm vụ hiển thị ra Form Customer Details

đoạn code cho event này 
                      if (this.MdiChildren.Length > 0)
            {
                Form[] activeform = this.MdiChildren;
                bool flag = false;
                for (int i = 0; i < activeform.Length; i++)
                {
                    if (activeform[i].Text == "Customer Details")
                    {
                        MessageBox.Show("The window is already running.", "Sales Management", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        flag = true;
                        break;
                    }
                    if (!flag)
                    {
                        CreateCustomerDetailsForm();
                    }
                }
            }
            else
            {
                CreateCustomerDetailsForm();
            }

Ngoài ra Form còn có ContextMenuStrip tạo shortcut tới các menu khi click chuột phải.
Kéo component ContextMenuStrip vào form rồi tạo các menu muốn đến như đối với MenuStrip

Để activate được ContextMenuStrip ta gán nó vào property ContextMenuStrip của Form. Các submenu tại đây có event Click tương tự như với các submenu ở trên

2. Giao diện

Kéo component MenuStrip vào form. Click vào ô Collection trong Properties của MenuStrip và thêm vào 3 sub-menus là Project, Options, Help như trên.
Submenu Project Details có event Click với nhiệm vụ hiển thị ra Project Details Form như sau:
đoạn code có nội dụng 
            ProjectDetails2 pd = new ProjectDetails2();
            pd.MdiParent = this;
            pd.Show();

tương tự với Staff Details cũng có event Click:
             
 if (this.MdiChildren.Length > 0)
            {
                Form[] activeform = this.MdiChildren;
                bool flag = false;
                for (int i = 0; i < activeform.Length; i++)
                {
                    if (activeform[i].Text == "Customer Details")
                    {
                        MessageBox.Show("The window is already running.", "Sales Management", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        flag = true;
                        break;
                    }
                    if (!flag)
                    {
                        CreateStaffDetailsForm();
                    }
                }
            }
            else
            {
                CreateStaffDetailsForm();
            }
0

Dialog Boxes


1. Giao diện:

Kéo các component vào như giao diện ở trên
Button Font có event Click với nội dung như sau (tao 1 instance của FontDialog và set Font cho ô RichTextBox)
          dlgrresResult = fdlgFont.ShowDialog();
            if (dlgrresResult==DialogResult.OK)
            {
                if (rtb.SelectedText.Length>0)
                {
                    rtb.SelectionFont = fdlgFont.Font;

                }
                else
                {
                    rtb.SelectAll();
                    rtb.Font = fdlgFont.Font;
                }
                rtb.Select(rtb.TextLength, rtb.TextLength);
                rtb.Focus();
            }

Button Color có event Click với nội dung như sau: (tạo 1 instance của ColorDialog và set Color cho text trong ô RichTextBox)
         dlgrresResult = cdlgColor.ShowDialog();
            if (dlgrresResult==DialogResult.OK)
            {
                if (rtb.SelectedText.Length>0)
                {
                    rtb.SelectionColor = cdlgColor.Color;
                }
                else
                {
                    rtb.SelectAll();
                    rtb.ForeColor = cdlgColor.Color;
                }
                rtb.Select(rtb.TextLength, rtb.TextLength);
                rtb.Focus();
            }
Button New có event Click check xem nếu Text thay đổi thì tạo 1 cái mới
Button Print có event Click với nội dung như sau: (tạo 1 instance của PrintDialog và show ra)
            dlgrresResult = pdlgPrint.ShowDialog();
            if (dlgrresResult==DialogResult.OK)
            {
                MessageBox.Show("The file has been printed sccessfully.", "EasyPad", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else if ( dlgrresResult==DialogResult.Cancel)
            {
                MessageBox.Show("Printing of the file has been cancelled", "EasyPad", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

Button Save có event Click với nội dung như sau: (tạo 1 instance của SaveDialog và goi phuong thuc SaveFile(filename) của RichTextBox)
            dlgrresResult = pdlgPrint.ShowDialog();
            if (dlgrresResult==DialogResult.OK)
            {
                MessageBox.Show("The file has been printed sccessfully.", "EasyPad", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else if ( dlgrresResult==DialogResult.Cancel)
            {
                MessageBox.Show("Printing of the file has been cancelled", "EasyPad", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
Button Save Ascó event Click với nội dung tạo 1 instance của SaveFileDialog và goi phuong thuc ShowDialog() của lớp này.

2. Giao diện
Kéo các component vào như giao diện ở trên
Button New có event Click với nhiệm vụ nếu RichTextBox chưa có text thì tạo mới còn không thì sẽ hỏi xem người dùng có muốn lưu lại file hiện tại không
               if (textChanged)
            {
                dlgresResult = MessageBox.Show("Do u want to save the file?", "EasyPad", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (dlgresResult == DialogResult.Yes)
                    btSave_Click(null,null);
                else if (dlgresResult == DialogResult.Cancel)
                {
                    rtbEasyPad.Focus();
                }
                else
                {
                    fileName = "";
                    rtbEasyPad.Enabled = true;
                    rtbEasyPad.Clear();
                    EnableControls();
                    rtbEasyPad.Focus();
                    textChanged = false;
                }
            }
            else
            {
                fileName = "";
                rtbEasyPad.Enabled = true;
                rtbEasyPad.Clear();
                EnableControls();
                rtbEasyPad.Focus();
                textChanged = false;
            }
Button Open có event Click với nhiệm vụ nếu RichTextBox chưa có text thì tạo mới còn không thì sẽ hỏi xem người dùng có muốn lưu lại file hiện tại không. Đồng thời, mở 1 dialog để chọn đến file muốn mở ra ở RichTextBox
               if (textChanged)
            {
                dlgresResult = MessageBox.Show("Do u want to save the file?", "EasyPad", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (dlgresResult == DialogResult.Yes)
                    btSave_Click(null,null);
                else if (dlgresResult == DialogResult.Cancel)
                {
                    rtbEasyPad.Focus();
                }
                else
                {
                    fileName = "";
                    rtbEasyPad.Enabled = true;
                    rtbEasyPad.Clear();
                    EnableControls();
                    rtbEasyPad.Focus();
                    textChanged = false;
                }
            }
            else
            {
                fileName = "";
                rtbEasyPad.Enabled = true;
                rtbEasyPad.Clear();
                EnableControls();
                rtbEasyPad.Focus();
                textChanged = false;
            }
Các nút khác Save, Save As, Print tương tự với giao diện 1

0

Date Controls và Time Controls




Workshop 1:
Giao diện

+ Product Name sử dụng ComboBox và có event SelectedValueChanged dựa trên các điều kiện như nếu Product Name được chọn là Hard Disk thì Rate sẽ là 3600... (tương tự đối với các Product Name khác)
+ Button Calculate có event Click với đoạn code tính toán và validate xem các ô tương ứng đã được điền chưa:
if (txtOrderNo.Text == "")
            {
                MessageBox.Show("Please enter the order number.", "Purchase Order", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtOrderNo.Focus();
            }
            else if (dtpOrderDate.Value.ToShortDateString() != DateTime.Today.ToShortDateString())
            {
                MessageBox.Show("Please select today's date.", "Purchase Order", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtpOrderDate.Focus();
            }
            else if (txtName.Text == "")
            {
                MessageBox.Show("Please enter customer name.", "Purchase Order", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtName.Focus();
            }
            else if (cbProductName.Text == "")
            {
                MessageBox.Show("Please select the product.", "Purchase Order", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                cbProductName.Focus();
            }
            else if (txtQuantity.Text == "")
            {
                MessageBox.Show("Please enter quantity.", "Purchase Order", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                txtQuantity.Focus();
            }
            else
            {
                rate = Convert.ToDouble(txtRate.Text);
                totalAmount = rate * quantity;
                txtTotalAmount.Text = totalAmount.ToString();
                btReport.Enabled = true;
            }
+Button Report với event Click:

Link download: http://www.mediafire.com/download/7u7etn5s4e97zac/InventorySystem.rar

Workshop 2:
Giao diện

+ Kéo component Timer vào Form
+ Button Start có event Click, sử dụng method Start() của lớp Timer. Sau đó set thuộc tính Enabled của button Start thành false và của Stop thành true.
+ Button Stopcó event Click, sử dụng method Stop() của lớp Timer. Sau đó set thuộc tính Enabled của button Start thành true và của Stop thành false.

Link download: http://www.mediafire.com/download/6x87gsyrd7gcx3z/DigitalWatch.rar
Practice Assignment
Giao diện

+ Form có event Load như sau: 
            lbTime.Text = DateTime.Now.ToLongTimeString();
            tNow.Start(); (tNow là 1 instance của lớp Timer)
+ Button Submit có event Click như sau: 
 if (txtName.Text == "")
            {
                MessageBox.Show("Please enter Student Name.","Students Attendance", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtName.Focus();
            }
            else if (nudRollNo.Value == 0)
            {
                MessageBox.Show("Students Roll Number must be greater than 0", "Students Attendance", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (dtpDate.Value.ToShortDateString() != DateTime.Today.ToShortDateString())
            {
                MessageBox.Show("Please select today date.", "Students Attendance", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtpDate.Focus();
            }
            else if (rbPre.Checked == false && rbAb.Checked == false)
            {
                 MessageBox.Show("Please choose Attendance.","Students Attendance", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("The attendance for the day has been registered successfully for " + txtName.Text + " in " + dtpDate.Text + " at " + lbTime.Text, "Students Attendance", MessageBoxButtons.OK, MessageBoxIcon.Information);
                nudRollNo.Value = 0;
                txtName.Text = "";
                rbAb.Checked = false;
                rbPre.Checked = false;
            }

+ Attendence sử dụng GroupRadioBox chỉ chọn được 1 trong 2 giá trị.
+ Button Exit có event Click với method Close();

Link download: http://www.mediafire.com/download/ajew1eeejhncdq0/Students_Attendance.rar
0

Tạo trình duyệt web trong winforms

Giao diện:

+ Kéo component Webbrower và các Button cần thiết (next, back, refresh, stop, go) vào Form

+ Chèn ảnh vào các button và tạo event click cho các button
Button back: sử dụng method GoBack() của lớp Webbrower
Button next: sử dụng method GoNext() của lớp Webbrower
Button refesh: sử dụng method Refresh() của lớp Webbrower
Button Stop: sử dụng method Stop() của lớp Webbrower
Button Go: sử dụng method Naviagte(url) (url là chuỗi địa chỉ của trang web lấy từ TextBox địa chỉ web)

 
Copyright © Pha Quế Domination