Bài viết mới nhất


Chào các bạn!

Chắc hẳn qua một thời gian dài học C# cùng với blog các bạn cũng đã từng nhiều lần sử dụng event trong chương trình của mình nhỉ?
Ví dụ cơ bản với một sự kiện nhận biết chuột vừa được click xuống
private void btn_MouseDown(object sender, MouseEventArgs e)
{
   //Do something...
}

Các bạn có bao giờ thắc mắc các tham số object senderMouseEventArgs e là gì không?
Đó là những tham số của event, được tạo và gán giá trị bởi Visual C#. 

THAM SỐ ĐẦU TIÊN: object sender
Sender mang kiểu dữ liệu object dùng chung, tổng quát.
Sender chứa một tham chiếu tới control/object đã gây ra event. Chúng ta có thể ép kiểu sender lại trở thành control/object để xử lý
Ví dụ: 
//Thay đổi text của button được click

protected void btn_Click (object sender, EventArgs ea)
{

    Button btn = sender as Button; 
    if(btn != null)
    {
        btn.Text = "I was clicked!";
    }
}

THAM SỐ THỨ HAI: MouseEventArgs e
Tham số này là nơi hành động thực sự xảy ra, tham số e cũng chứa một đối tượng, nhưng là kiểu cụ thể của một loại các tham số của mouse event, chứa các dữ liệu của event
Vậy thì MouseEventArgs sẽ chứa gì?
Bạn có thể tham khảo EventArgs Class từ MSDN hoặc các nguồn khác để xem thông tin, hoặc gọi biến e ra, rồi ấn dấu chấm "." để xem các thuộc tính/phương thức của e.





Trong đó:
 - Clicks: trả về số lần người dùng đã click chuột vào control đó
 - Button: trả về nút đã được nhấp (trái, giữa, phải)
 - X, Y: trả về tọa độ x,y mà con trỏ đang ở lúc sự kiện khởi chạy
 - ...

Mỗi event handler đều có các tham số riêng cho nó. Ví dụ btn_Clickbtn_MouseClick sẽ có hai tham số EventArgs và MouseEventArgs khác nhau. Nên tùy theo nhu cầu sử dụng mà ta sẽ gọi sự kiện cho hợp lý

Trên là những gì cơ bản về tham số của event, các bạn có thắc mắc thì bình luận mình sẽ giải đáp. 
Chào và chúc các bạn học tốt!!



Chào các bạn!

Đã lâu mình không viết bài trở lại, chắc cũng 3 tháng rồi :D nhưng traffic của blog vẫn đều đều ~400 bạn truy cập/ngày. Cảm ơn các bạn đã tin tưởng và ủng hộ blog, mình hứa sẽ cho ra thêm nhiều bài viết hay và bổ ích.

Gần đây mình có nhận được một yêu cầu của một bạn theo dõi blog, bạn ấy muốn làm một chương trình C# để thay đổi giờ hệ thống.
Hôm nay mình sẽ hướng dẫn các bạn viết ra chương trình đó. Nghe có vẻ rất dễ đúng ko?




Để thay đổi System Time bạn phải can thiệp vào hệ thống, trong C# bạn có thể dùng cách P/Invoke hàm SetSystemTime() theo WIN32 API có sẵn.
Đầu tiên bạn chuẩn bị cho mình một struct như sau:
private struct SYSTEMTIME
{
            public ushort Year;
            public ushort Month;
            public ushort DayOfWeek;
            public ushort Day;
            public ushort Hour;
            public ushort Minute;
            public ushort Second;
            public ushort Milliseconds;
}

Struct này tương tự theo cấu hình của class DateTime mà giờ hệ thống đang sử dụng :D
Sau đó các bạn thêm extern method này vào:
//Method set giờ hệ thống

[DllImport("kernel32.dll", SetLastError = true)]
private extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);

//


Đây là method sử dụng thư viện động "lõi hệ thống 32" (kernel32.dll) của windows, và gây những tác động lên nó. Lưu ý để sử dụng DllImport thì bạn cần thêm namespace sau:
using System.Runtime.InteropServices; 

Namespace này dùng để chứa class DllImport - dùng chỉ ra rằng những phương thức này được tiếp cận bởi những DLL không được chương trình quản lý với dạng 1 điểm đầu vào tĩnh (static entry point)

Sau khi using namespace, thêm method, các bạn bắt đầu gọi method đó. Các bạn có thể tạo 1 button để xử lý sự kiện onClick cho button đó để gọi hàm :D
private void submit_btn_Click(object sender, EventArgs e)
{
       //Tạo instance
       SYSTEMTIME s = new SYSTEMTIME();

       //Gán các giá trị (ở đây mình gán ngẫu nhiên)
       s.Year = (ushort)2009;
       s.Month = (ushort)12;
       s.DayOfWeek = (ushort)3;
       s.Day = (ushort)4;
       s.Hour = (ushort)5;
       s.Minute = (ushort)6;
       s.Second = (ushort)7;
       s.Milliseconds = (ushort)8;

       //Gọi extern method đã thêm ở trên và xem kết quả :D
       SetSystemTime(ref s);
}

Các bạn có thể dùng 1 Control DateTimePicker để lấy số liệu nhập vào, phân tích ra và gán cho giờ hệ thống
//Lấy dữ liệu của control DateTimePicker xuống lưu vào biến
DateTime result = dateTimePicker1.Value;

SYSTEMTIME s = new SYSTEMTIME();

//Phân tích ra và lưu vào struct
s.Year = (ushort)result.Year;
s.Month = (ushort)result.Month;
s.DayOfWeek = (ushort)result.DayOfWeek;
//v.v...

Cuối cùng các bạn build chương trình ra, tìm đến thư mục */obj/Debug. Chạy file thực thi *.exe với quyền admin (Run as administrator). Lưu ý phải chạy với quyền admin thì mới thành công, vì các hàm của WIN32 API cần quyền admin để thay đổi/can thiệp vào dll hệ thống


LƯU Ý

Một số bạn khi thay đổi ngày thì chương trình chạy ok, nhưng khi thay đổi giờ thì chương trình chạy sai. Đó là do hàm SetSystemTime() của Win32 API nhận vào giá trị UTC, rồi tự convert lên Local Time (+7). Nên chương trình mình sẽ sai. Các bạn tham khảo giải pháp Work around của mình. Các bạn nào có ý hay hơn hay inbox cho page mình nhé :D 


_______________________________________________________________________

Đừng nên làm những chương trình thay đổi giờ hệ thống như thế này, bởi vì nó sẽ:

1) Làm phiền người sử dụng, nếu 1 chương trình mình dùng mà làm thay đổi giờ hệ thống máy tính thì cực kì khó chịu
2) Có thể làm break các ứng dụng khác, làm thay đổi thông tin trial của một số phần mềm.

Chúc các bạn thành công!


Chào các bạn!

Hôm nay mình xin chia sẻ một số từ khóa để các bạn có thể học lập trình Java Core từ cơ bản đến nâng cao.




JAVA BASIC
  • Java - Home
  • Java - Overview
  • Java - Environment Setup
  • Java - Basic Syntax
  • Java - Object & Classes
  • Java - Basic Datatypes
  • Java - Variable Types
  • Java - Modifier Types
  • Java - Basic Operators
  • Java - Loop Control
  • Java - Decision Making
  • Java - Numbers
  • Java - Characters
  • Java - Strings
  • Java - Arrays
  • Java - Date & Time
  • Java - Regular Expressions
  • Java - Methods
  • Java - Files and I/O
  • Java - Exceptions

JAVA OBJECT ORIENTED
  • Java - Inheritance
  • Java - Overriding
  • Java - Polymorphism
  • Java - Abstraction
  • Java - Encapsulation
  • Java - Interfaces
  • Java - Packages
  • 3. Java Advanced
  • Java - Data Structures
  • Java - Collections
  • Java - Generics
  • Java - Serialization
  • Java - Networking
  • Java - Sending Email
  • Java - Multithreading
  • Java - Applet Basics
  • Java - Documentation

Các từ khóa để học về Java Swing hoặc Android sẽ được mình cập nhật trong các bài viết sau.Tham khảo bài viết tương tự với ngôn ngữ lập trình C# tại: Trình tự học C# từ cơ bản đến nâng cao

Chào các bạn, chúc các bạn học tốt!



Chào các bạn!

Hôm nay mình xin chia sẻ một số từ khóa để các bạn có thể học lập trình C# từ cơ bản đến nâng cao.




  • C# - Overview
  • C# - Environment
  • C# - Program Structure
  • C# - Basic Syntax
  • C# - Data Types
  • C# - Type Conversion
  • C# - Variables
  • C# - Constants
  • C# - Operators
  • C# - Decision Making
  • C# - Loops
  • C# - Encapsulation
  • C# - Methods
  • C# - Nullables
  • C# - Arrays
  • C# - Strings
  • C# - Struct
  • C# - Enums
  • C# - Classes
  • C# - Inheritance
  • C# - Polymorphism
  • C# - Operator Overloading
  • C# - Interfaces
  • C# - Namespaces
  • C# - Preprocessor Directives
  • C# - Regular Expressions
  • C# - Exception Handling
  • C# - File I/O
  • C# - Advanced Tutorial
  • C# - Attributes
  • C# - Reflection
  • C# - Properties
  • C# - Indexers
  • C# - Delegates
  • C# - Events
  • C# - Collections
  • C# - Generics
  • C# - Anonymous Methods
  • C# - Unsafe Codes
  • C# - Multithreading


Các bạn cứ học theo từng mức độ, search các từ khóa này mà học thì sẽ dễ học và tiện nắm bắt các kiến thức hơn
Tham khảo các từ khóa tương tự với ngôn ngữ Java tại: Trình tự học Java Core từ cơ bản đến nâng cao

Chúc các bạn thành công!




Bài viết được dịch từ website Skilledup

Python - ngôn ngữ lập trình hiện đại và dễ học


Tất cả chúng ta đều từng được nghe những lời khuyên rằng: Đại học sẽ trang bị cho chúng ta những hành trang để tiến tới thành công, sẽ là những chiến mã đưa chúng ta những thung lũng sương mù để đến với những giấc mơ của chúng ta.

Chẳng bao giờ là quá muộn để học lập trình cả. Nhưng bạn nên bắt đầu từ đâu? Chúng tôi khuyên bạn nên bắt đầu với Python, ngôn ngữ lập trình được lấy cảm hứng từ nhóm hài Monty Python. Vậy bạn kì vọng gì vào một ngôn ngữ lập trình mang tên theo tên của một nhóm người chuyên làm mọi thứ trở nên buồn cười?
Well, Có rất nhiều lý do rõ ràng nhưng chúng tôi sẽ cung cấp cho bạn 5 lý do thuyết phục nhất về tại sao Python là ngôn ngữ mà bạn nên học đầu tiên.



    1. DỄ HỌC

Hãy đối mặt với thực tế rằng, học Python không thú vị như là một cuộc thi breakdance tổ chức trên tàu sân bay. May mắn thay, Python được thiết kế để dành cho những người mới bắt đầu. 
Ngôn ngữ Python dễ đọc như toán học Mẫu giáo, cú pháp của Python rất sáng sủa vì đã loại bỏ sự rườm rà trong việc khai báo biến tẻ nhạt và cặp dấu ngoặc xoắn. Python cũng yêu cầu viết ít code hơn để hoàn thành các tác vụ cơ bản, làm cho nó trở thành một ngôn ngữ rất tiện lợi. Code Python thường ngắn hơn 3-5 lần so với Java, và ngắn hơn 5-10 lần so với C++
Nhưng mặc dù Python dễ dàng để tự học, chúng ta đều biết được sự nguy hiểm của việc học một mình và không chuẩn bị trước. May mắn thay, sau nhiều năm phát triển, cộng đồng Python đã có một bộ sưu tập tài nguyên phong phú giúp bạn học lập trình một cách nhanh chóng và hiệu quả.

Ngôn ngữ lập trình Python được lấy tên từ nhóm hài kịch Monty Python


   2. NỀN TẢNG VỮNG CHẮC

Python có thể tạo nền tảng vững chắc để bạn tiến vào thế giới lập trình. Các nhà tuyển dụng đang tìm kiếm những lập trình viên full-stack và Python sẽ giúp bạn đáp ứng được yêu cầu đó. Python là một ngôn ngữ hướng đối tượng, giống như Javascript, C++, C#, Perl, Ruby,... và những ngôn ngữ lập trình lớn khác. Đối với những ai đang có kế hoạch để trở thành nhà phát triển phần mềm, thì việc học ngôn ngữ này sẽ giúp bạn thích nghi dễ dàng với các môi trường khác.

Cụ thể, kinh nghiệm làm việc với Python có thể là một nền tảng vững chắc bởi vì các phương thức của Python có thể được sử dụng trong một loạt các ứng dụng. Ví dụ, Tổ chức mã nguồn và cấu trúc của Python có thể hoạt đông như Rosetta Stone khi cố gắng giải mã ngôn ngữ lập trình bí ẩn hơn.
Sau đây là một so sánh ngắn của Python với hai ngôn ngữ khác: Ruby và PHP. Ruby có cấu trúc tương tự như Python trong khi PHP có cú pháp rất khác.

Vòng lặp "for" trên một danh sách [Python]:

Vòng lặp "each" với một mảng [viết bằng Ruby]:

Vòng lặp "while" trong Python:
Vòng lặp "while" trong PHP:
Nếu chưa có kinh nghiệm lập trình trước đây, bất cứ ai cũng có thể dễ dàng phát hiện những điểm tương đồng và khác biệt giữa cú pháp của Python và những ngôn ngữ khác. Dù sao đi nữa, một sự hiểu biết cơ bản về Python khiến cho việc nhảy qua Ruby dễ như trở bàn tay, và việc hiểu code PHP trở thành một nhiệm vụ dễ dàng hơn. Một khi bạn tìm hiểu về triết lý Python (Zen of Python), bạn có thể áp dụng thành công khi viết code trong bất kỳ ngôn ngữ nào.


3. THẾ LẬP TRÌNH RAPSBERRY PI THÌ SAO?

Biến công việc lập trình trở thành niềm vui là điều không hề dễ dàng chút nào, cho dù bạn là người mới bắt đầu, lập trình viên dày dặn, hoặc chỉ là trẻ em. Ngay cả những giáo viên nhiệt tình nhất cũng phải rất vất vả để cho học viên trở nên hào hứng khi học lập trình. Nhưng có một nơi mà lập trình luôn mang lại niềm vui: cầu nối thu hẹp khoảng cách giữa máy tính trừu tượng và các ứng dụng thực tế giờ đây được thực hiện dễ dàng bằng Pi.

Raspberry Pi là một máy tính siêu nhỏ giá rẻ có kích thước bằng một tấm card, đang được sử dụng rộng rãi để tạo ra những thứ thú vị như robot, ô tô điều khiển từ xa, và video game console. Với Python là ngôn ngữ lập trình chính của nó, Raspberry Pi đang được sử dụng rộng rãi ngay cả bởi trẻ em để tạo ra các radio, máy ảnh, robot đối kháng, hay cả máy cho thú cưng ăn... 
Với chứng cuồng Raspberry Pi có xu hướng ngày càng tăng, có vô số các dự án DIY, tài liệu hướng dẫn, và sách trên internet để bạn lựa chọn. Chúng sẽ giúp bạn đi từ chương trình "hello world" đến một cái gì đó mà bạn có thể thực sự tự hào. Mặc dù bạn sẽ không thể xây dựng một mini Voltron trong tương lai gần, cảm giác hài lòng khi hoàn thành một dự án DIY sẽ thúc đẩy bạn tiến xa hơn trong việc học tập.



   4. TIỀN TIỀN VÀ TIỀN

Nếu việc thiết kế một con robot biết hát ngẫu nhiên những bài hát của Gun N' Rose bằng Raspberry Pi và Python vẫn chưa làm bạn thấy hài lòng, vậy còn triển vọng của việc làm dày túi tiền của bạn hơn chỉ với ngôn ngữ Python thì như thế nào? Các công ty như Google, Yahoo!, Disney, Nokia, và IBM đều sử dụng Python. Trong thực tế, trong số các ngôn ngữ lập trình, Python có sự tăng trưởng lớn nhất ở số lượng việc làm - luôn ở mức 19%  - (tháng 3, 2013) 

Đáng chú ý, nhu cầu tuyển dụng chung cho các chuyên viên IT giảm 5% so với năm trước (tháng 1 - 2014), nhưng nhu cầu tuyển dụng các lập trình viên Python được tăng thêm tới 8,7%. Tại NewYork, các developers Python đứng thứ 8 trong bảng xếp hạng nhu cầu tuyển dụng nhân viên công nghệ cao, với mức lương trung bình là 106 000 $/ năm. Ở bên kia Đại Tây Dương, nhu cầu tuyển dụng lập trình viên Python cũng rất cao, như trong biểu đồ sau đây:



    5. NHIỀU WEBSITE LỚN SỬ DỤNG

Phát triển web vẫn là một mảnh đất màu mỡ, là "một nền kinh tế bùng nổ" dành cho các lập trình viên. Bạn có thể sử dụng Python trong nhiều lĩnh vực khác nhau. Django - là một web framework mã nguồn mở phổ biến được viết bằng Python - là nền tảng của các trang web lớn như Pinterest, The New York Times, The Guardian, Bit Bucket, và Instagram. Django là một framework hoàn chỉnh và khá phức tạp trong phát triển web nhưng vẫn đem lại cho bạn nhiều sự kiểm soát như bạn muốn. Là một framework mã nguồn mở, tất cả các thông tin bạn cần để bắt đầu có thể được tìm thấy tại DjangoProject.com.

Python là ngôn ngữ kịch bản duy nhất bạn cần để bắt đầu thiết kế trang web và các ứng dụng của riêng mình. Những gì là đúng với Python thì cũng đúng với Django. Phát triển web với Django có nhiều tài liệu và một cộng đồng hỗ trợ lớn, giúp bạn mất rất ít thời gian để viết code. Với Django, những ý tưởng tuyệt vời có thể trở thành sản phẩm thực tế một cách nhanh chóng, tiết kiệm hàng giờ code. 
Điều này giúp bạn có nhiều thời gian hơn đê cải thiện các concept của mình, và biến chúng trở thành các sản phẩm cao cấp và chuyên nghiệp! Hơn nữa, Django không phải là framework phát triển duy nhất dành cho các lập trình viên Python. Có rất nhiều framework Python khác mà bạn có thể khám phá.


HÃY BẮT ĐẦU HỌC VÀ LÀM VIỆC VỚI PYTHON NGAY HÔM NAY!

Tại sao lại là Python? Vì nó rất dễ học và sẽ cung cấp cho bạn một kiến thức nền tảng để bạn có thể chuyển sang các ngôn ngữ khác. Một thiết bị ngoại vi như Raspberry Pi sẽ giúp bạn nhận ra Python có thể được sử dụng theo một cách rất thú vị và vui nhộn. Cuối cùng, với các công cụ phát triển web như Django, Python có thể giúp bạn biến bất kỳ ý tưởng kiếm tiền nào trở thành hiện thực.


Nếu đã cảm thấy thích Python, minh xin trích dẫn một số công cụ và diễn đàn học tập python:
 - Cộng đồng Python Việt Namhttp://pythonvietnam.info/index.php
 - Các khóa học Python online trên CodecademyCoursera
 - Web hỗ trợ học tập Tutorialspoint: http://www.tutorialspoint.com/python/index.htm
 - Series dạy lập trình Python của anh Lê Trần Đạthttps://www.youtube.com/playlist?list=PLyiioioEJSxEh_S_XFvG0d2xKRMSWLfN_
 - Bài chỉ dẫn Python: http://www.vithon.org/tutorial/2.5/tut.html
 - Tài liệu, ebook: http://sinhvienit.net/forum/ebook-ve-lap-trinh-python.265250.html 

Trên là bài viết về 5 lý do để chọn Python làm ngôn ngữ lập trình đầu tiên được dịch lại và một số công cụ để bước đầu học lập trình Python. 
Chào các bạn, và chúc các bạn học tốt!


Chào các bạn!
Hôm nay mình xin giới thiệu với các bạn cách thêm control động hay còn gọi là dynamic control trong C# windows form.


GIỚI THIỆU

Trong nhiều chương trình, đôi khi bạn cần tạo thêm một control mới ngay trong lúc chương trình đang thực thi, hoặc xóa một control hiện có sẵn.
Vậy thì làm thế nào? Lấy đâu ra giao diện thiết kế của Visual Studio để thêm?
Khi đó ta phải sử dụng control động (Dynamic controls)

Dynamic control trong lập trình C#

Visual Studio .NET không có mảng chứa control như Visual Basic 6.0. Nhưng tin vui là bạn vẫn có thể tự thiết lập để làm những điều tương tự. Các ưu điểm của C# Dynamic controls là chúng có thể được tạo ra để phản hồi với cách mà người dùng tương tác với các ứng dụng. Các control được thêm vào trong lúc chương trình thực thi thường là textbox hoặc button. Nhưng tất nhiên, hầu như tất cả các C# control đều có thể được tạo ra như là một dynamic control


LÀM THẾ NÀO ĐỂ TẠO CONTROL ĐỘNG TRONG C#

  • Đầu tiên các bạn cần khai báo một đối tượng Control (nhớ using các namespace cần thiết cho control cần dùng)
  • Thiết lập các thuộc tính cần thiết cho đối tượng vừa khai báo như: Vị trí (top, left, bottom, right), Text, Font, Color,....
  • Thêm control vào danh sách controls của form chứa nó.

Ta thực hành thôi :D 
Đầu tiên trong trình thiết kế, ta thêm một button, và cài đặt sự kiện click cho nó, mục đích khi bấm vào nút nó sẽ tự thêm một textbox mới như hình ở đầu bài.
Sau đó sử dụng đoạn code sau, và xem kết quả xảy ra nhé :) 

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int count = 1;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AddNewTextBox();
        }

        public System.Windows.Forms.TextBox AddNewTextBox()
        {
            System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox();
            this.Controls.Add(txt);
            txt.Top = count * 25;
            txt.Left = 100;
            txt.Text = "Icetea Viet TextBox " + this.count.ToString();
            count = count + 1;
            return txt;
        }
    }
}

   - Vậy là xong phần tạo. Tiếp theo là thao tác hoặc xóa controls. Để xóa control xác định thì bạn cần biết được một trong các thông tin sau (thứ tự của control đó trong list Controls của form, Key của control, Name hoặc Text của control...)
   - Bạn hãy tham khảo các method sau: this.Controls.RemoveAt(int index), this.Controls.RemoveByKey(string key),...

Hoặc các bạn có thể sử dụng vòng lặp foreach, duyệt qua tất cả các control trong list Controls và xét điều kiện
foreach (TextBox txtBox in this.Controls.OfType< TextBox >())
{
        if(txtBox.Text == "IceTea Viet")
        {
               //Do something
        }

        //other condition
}
Như vậy là ta đã biết cách tạo và sử dụng một dynamic control cho mình rồi.
Chúc các bạn học tốt, và nhớ để lại bình luận của mình bên dưới nhé :)


Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget