Archive

Archive for November, 2011

Custom RadioButton

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;

namespace ViCleaner.controls
{
public partial class MGRadioButton : RadioButton
{
Image img = global::ViCleaner.Properties.Resources.uncheck;

public enum Status
{
check,uncheck
}

Status st = Status.check;

private void SetImg()
{
switch (st)
{
case Status.check:
img = global::ViCleaner.Properties.Resources.check;
break;
case Status.uncheck:
img = global::ViCleaner.Properties.Resources.uncheck;
break;
default:
img = global::ViCleaner.Properties.Resources.check;
break;

}
}

public MGRadioButton()
{
InitializeComponent();
this.Width = 200;
this.Height = img.Height;
this.Font = new System.Drawing.Font(“Palatino Linotype”, 26F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}

protected override void OnPaint(PaintEventArgs pevent)
{
base.OnPaint(pevent);
Graphics g = pevent.Graphics;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
SetImg();
g.FillRectangle(new SolidBrush(SystemColors.Control), 0, 0, this.Width, this.Height);
g.DrawImage(img, 0, 0, img.Width, img.Height);
SizeF f = g.MeasureString(this.Text,this.Font);
g.DrawString(this.Text, this.Font, Brushes.Black, new PointF((img.Width +5), (img.Height – f.Height) / 2));
//TextRenderer.DrawText(g,this.Text, this.Font, new Rectangle(0, 0, this.Width + img.Width, this.Height), Color.FromArgb(0, 0, 0), TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter);
}

protected override void OnCheckedChanged(EventArgs e)
{
if (this.Checked)
{

st = Status.check;
}
else
st = Status.uncheck;
//base.OnCheckedChanged(e);
//this.Refresh();
this.Invalidate();
}
//

protected override void OnClick(EventArgs e)
{
st = Status.check;
this.Checked = true;
//this.Refresh();
//base.OnClick(e);
this.Invalidate();
}

protected override void OnLayout(LayoutEventArgs levent)
{
if (this.Checked)
{

st = Status.check;
}
else
st = Status.uncheck;

//this.Refresh();
//base.OnLayout(levent);
this.Invalidate();
}
}
}

Advertisements
Categories: C#

Add and Retrieve Image into database use LINQ to SQL

First we will create a table call tblImage(id,images)

and then create a class datacontext and add tblImage to this datacontext class

– Create storeprocedure

CREATE PROCEDURE IMAGE_INSERT
@IMAGE IMAGE
AS
INSERT INTO TBLIMAGE VALUES(@IMAGE)

– Code to add Image to database

byte[] data;
Image im = Image.FromFile(@”d:\keyboard.bmp”);
MemoryStream msread = new MemoryStream();
im.Save(msread, System.Drawing.Imaging.ImageFormat.Bmp);
data = msread.ToArray();
System.Data.Linq.Binary bi = new System.Data.Linq.Binary(data);
DBTEST.IMAGE_INSERT(bi);

– Code to Retrieve Image from database

var image = (from t in DBTEST.tblImages
orderby t.id descending
select t.hinhanh).FirstOrDefault();

byte[] imagedata = image.ToArray();
MemoryStream ms = new MemoryStream(imagedata);
Image i = Image.FromStream(ms);

Ok, this is all my know about how to add or retrieve images to database use LINQ to SQL.

Hope this article will useful for you!.

Thanks.

Categories: C#

What is the Difference Between an Abstract Class and an Interface in C#?

When interviewing for C# jobs often you’ll be asked what is the difference between an abstract class and  interface in C#? In this article, I’ll take a look at these two techniques, their differences and when you should use which one them.

Interfaces in C#

An interface in C# is simply a template for a class. It’s part of how C# implements polymorphism.  An interface doesn’t contain any code, only definitions of methods, properties, events and indexers. A class that implements an interface will need to define the code used for these items. Here’s a short code snippet of an example C# interface…

public interface IMyItem
{
    int Id { get; set; }

    string Description { get; set; }

    string RunTest(int testNumber);

    event EventHandler TestStatus;

    string this[int index] { get; set;}
}

In this example, the interface includes two properties, a method, an event and an indexer. A class that used this interface would need to provide code for these items. While the code doesn’t have to do anything, it does have to be implemented by the class using the interface.

One powerful thing that you can do with interfaces is that you can have a class that implements more than one interface. One of my favorite usages is to not only implement a program specific interface but to also implement a generic List or Queue.

Abstract Classes in C#

An abstract class in C# is a class that can’t be instantiated and, like an interface, is intended to provide a common class definition that is shared by derived classes. Like an interface, the routines in an abstract class may be methods, properties, indexers and events. Unlike an interface, an abstract class may contain code although it may also have abstract methods that do not have code. Also, an abstract class may define constructors and destructors while an interface does not as well as internal private and protected variables.

Here’s a simple example of a C# abstract class…

public abstract class TestItem
{
    private int _testId;

    public TestItem(int testIdValue)
    {
        _testId = testIdValue;
    }

    public int TestId
    {
        get
        {
            return _testId;
        }
        set
        {
            _testId = value;
        }
    }

    public abstract string Description { get; set; }

    public abstract void RunTest(int i);

    public abstract string this[int index] { get; set; }
}

As you can see above, there is code in the constructor and one of the properties while the rest of the routines are marked with the abstract keyword to indicate that their implementation is left up to the derived subclass. The routines marked as abstract have to be implemented in code by the derived class, they aren’t optional. However, the routines that are implemented in code by the abstract class do not have to be implemented in code by the subclass. However, routines that have code in the abstract class can be overridden if they’re marked with the virtual keyword.

Here’s an example of a class that is derived from the abstract class above…

public class Tester : TestItem
{
    public Tester(int testIdValue) : base(testIdValue) { }

    public override string Description { get; set; }

    public override void RunTest(int i)
    {
        //call test routines
    }

    public override string this[int index]
    {
        get
        {
            // process and return some data
        }
        set
        {
            // process and assign some data
        }
    }
}

Note that we need to use the override keyword to indicate to the Framework that a particular routine is overriding the base abstract class’ routine definition. Also see that the class doesn’t have an implementation of TestId property, it uses the code in the abstract class instead. One tricky part is in our constructor. We have to define a constructor or else the compiler will present this error: “[classname] does not contain a constructor that takes 0 arguments”. To avoid this error, we have to define a constructor and pass the value on to the base class code as seen in the example code above.

Abstract Class vs. Interface in C#

But, when should you use an abstract class instead of an interface and vice versa? Either technique provides a way to have a common definition for a class although interfaces are a form of polymorphism and abstract classes are a form of inheritance, from an OOP perspective. Let’s see what this means in practical terms.

Let’s assume that we’re working on an inventory and invoicing system that has several different user types, such as vendor, dealer, distributor, employee and so forth. As we look at the system, it’s obvious we’ll be handling users will be the same for all users so it makes sense to have a user abstract class that we can derive our classes from for our various types. In this context, an interface probably wouldn’t make sense because there would probably be similar implementation needs across the spectrum of users. So, we might have an abstract base class called User that would have subclasses for each type of user.

Now, let’s assume that in our system we wanted to standardize how programmers working on the project defined common functions such as duplicating records. On a large project, it can get confusing with everybody defining things their own way, so, by using a common interface standard a lot of this confusion can be eliminated. For example, an IDuplicate interface could be used for users, invoices, inventory items and so forth in the project. The actual code might be considerably different but the interface is the same across the board in the project. Also, remember that C# is single inheritance, you can include more than one interface. Therefore, a class could implement an IDuplicate interface as well as other interfaces you might define or ones that you might borrow from the .NET Framework, such as IList.

I hope this has helped you get the differences between abstract classes and interfaces in C# clearer in your mind.

Categories: C#

Ý tưởng Android

1. Viết game trúc xanh

2. Chương trình trắc nghiệm lịch sử Việt Nam…

Categories: Android

Cuối năm nay sẽ có flash cho Android 4.0

Adobe xác nhận thông tin trên và cho biết đây sẽ là phiên bản cho di động cuối cùng mà hãng phát triển, trước khi chuyển hẳn sang HTML5.

Cuối năm nay sẽ có flash cho Android 4.0
Flash Player cho Android 4.0 sẽ là phiên bản di động cuối cùng mà Adobe phát triển. Ảnh: Slashgear.

Công ty Adobe xác nhận sẽ ra mắt Flash Player dành cho di động chạy Android 4.0 vào cuối năm nay. Như vậy, người dùng các dòng smartphone như Galaxy Nexus hay các thiết bị nền tảng Android 4.0 không còn phải lo máy của họ không chạy được game flash hay hình động trên trình duyệt. Tuy nhiên, Adobe cũng nói thêm rằng đấy sẽ là phiên bản cuối cùng của họ cho nền tảng di động.

Adobe sẽ cho ra mắt thêm một bản Flash Player dành cho trình duyệt web của điện thoại di động để hỗ trợ Android 4.0 và thêm một bản Flash Linux Porting Kit. Cả hai dự kiến sẽ ra mắt vào cuối năm nay“, người phát ngôn của công ty cho biết. Tất cả những bản ra mắt sau đó chỉ có nhiệm vụ sửa lỗi và tăng cường bảo mật bởi hãng kỳ vọng HTML5 sẽ trở thành chuẩn mới cho di động.

Đầu tháng 11 này, Adobe đã tuyên bố từ bỏ nền tảng Flash cho di động.

Theo Sohoa
Categories: IT

Android là hệ điều hành bị virus tấn công nhiều nhất

Hệ điều hành di động của Google, Android, thống trị thị trường và bị tấn công mạnh nhất bởi virus “con ngựa thành Troy” và hàng loạt virus khác. Công ty Juniper Networks chỉ ra mức tăng 472% phần mềm độc hại nhằm vào Android.

Đó có thể gọi là cái giá của sự nổi tiếng. Liệu có phải hệ điều hành Android hiện đang đóng vai trò chủ đạo trên thị trường điện thoại thông minh? Vậy nên, hệ điều hành này bị hầu hết tấn công nhiều nhất bởi virus và các phần mềm độc hại, cũng như Windows là một trong những tên tuổi nổi tiếng trong làng máy tính, so với Mac OS và Linux.

Juniper Networks tiết lộ những con số rất ấn tượng: 472% phần mềm độc hại được phát hiện thêm kể từ cuối tháng 7, sau khi tăng 400% giữa năm 2009 và mùa hè năm 2010. Trên thực tế, số lượng các virus được phát hiện tăng gấp đôi mỗi tháng.

Nó bao gồm 55% phần mềm gián điệp và 44% phần mềm độc hại dạng trojan (ngựa thành Troy ) ẩn trong tin nhắn SMS, đó là hai loại virus lây nhiễm phổ biến nhất. Các phần mềm độc hại ngày càng nguy hiểm và tinh vi, một số trong số đó xâm nhập vào trung tâm hệ điều hành cho phép haker kiểm soát toàn bộ điện thoại thông minh.

Các virus chốn ở đâu? Thường xuyên nhất là trong các ứng dụng thực hiện tính năng cụ thể để xâm nhập vào điện thoại thông minh. Juniper giải thích điều này là do việc mở một tài khoản một cách dễ dàng cho cư dân vô danh để đăng tải dữ liệu trong cửa hàng Android Market và thiếu kiểm soát của Google về chuyện này.

Người ta có thể chê trách các chính sách chặt chẽ của Apple trên cửa hàng ứng dụng App Store của mình, nhưng chí ít là nó có tác dụng giảm thiệt hại do các virus này gây ra.

Theo VnMedia

Categories: Android

Zuckerberg xóa Facebook: Cư dân mạng hoảng loạn?

Sau một thời gian làm mưa làm gió trên cộng đồng mạng, Facebook đột ngột bị người đồng sáng lập là Zuckerberg xoá bỏ và anh tự huỷ diệt chính bản thân mình.

Đây có thể là kịch bản của bộ phim Social Network 2 (Mạng xã hội), nói về những chuyện xảy ra sau khi Facebook đã trở nên phổ biến trên toàn thế giới.

Zuckerberg sẽ huỷ diệt Facebook trong bộ phim Social Network 2? – ảnh: Flippies

Trên trang chủ của nhà sản xuất Nice Piece Productions, chúng ta đã có thể xem đoạn giới thiệu về bộ phim Social Network 2, mặc dù hãng này không chia sẻ về đạo diễn của bộ phim, nhưng dựa vào tên phim thì có thể nghĩ đạo diễn sẽ là Aaron Sorkin – người đã từng đoạt giải Oscar với bộ phim Socical Network (Mạng xã hội) đầu tiên.

Trailer Socical Network 2

Trong bộ phim, dường như sẽ có những đoạn miêu tả về ông chủ của Wikileaks – Julian Assange và cuộc chiến giữa nhóm phát triển Facebook với mạng xã hội Google +.

Theo VTC

Categories: C#