Trong chương trình có những lúc chúng ta phải hỏi lại và nhận những Input của người sử dụng.

Ví dụ: Khi người sử dụng cần hủy một chứng từ, không thể chỉ cho hủy bằng một nút vì nếu đó chỉ là bấm nhầm thì rất mất thời gian để xử lý

- Hay khi cần làm một tác vụ quan trọng như Format hay Restore ổ cứng, đây là những quy trình khá mất thời gian lại rất nhạy cảm do sự thay đổi rất lớn nên cần có sự xác nhận của người sử dụng trong việc sử dụng

* Đây là code của form thông báo cho người dùng:

Mã:
    public static DialogResult LKInputBox(string title, string promptText, ref string value)
    {
    Form form = new Form();
    Label label = new Label();
    TextBox textBox = new TextBox();
    Button buttonOk = new Button();
    Button buttonCancel = new Button();

    form.Text = title;
    label.Text = promptText;
    textBox.Text = value;

    buttonOk.Text = "Nhập";
    buttonCancel.Text = "Hủy";
    buttonOk.DialogResult = DialogResult.OK;
    buttonCancel.DialogResult = DialogResult.Cancel;

    label.SetBounds(9, 20, 372, 13);
    textBox.SetBounds(12, 36, 372, 20);
    buttonOk.SetBounds(228, 72, 75, 23);
    buttonCancel.SetBounds(309, 72, 75, 23);

    label.AutoSize = true;
    textBox.Anchor = textBox.Anchor | AnchorStyles.Right;
    buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
    buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;

    form.ClientSize = new Size(396, 107);
    form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });
    form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height);
    form.FormBorderStyle = FormBorderStyle.FixedDialog;
    form.StartPosition = FormStartPosition.CenterScreen;
    form.MinimizeBox = false;
    form.MaximizeBox = false;
    form.AcceptButton = buttonOk;
    form.CancelButton = buttonCancel;

    DialogResult dialogResult = form.ShowDialog();
    value = textBox.Text;
    return dialogResult;
    }
* Mô tả: Input Box sẽ bao gồm tiêu đề (Title), một dòng thông báo và ô để nhập dữ liệu. Nếu sau khi người dùng nhập dữ liệu xong và nhấn vào nút "Nhập" thì chương sẽ trả về value trong contructor

* Sau đó ta có thể sử dụng như sau:

Mã:
    private void btnInput_Click(object sender, EventArgs e)
    {
    string value = "LapKan Supporting";
    if (LKSupport.LKInputBox("Thông báo", "Nhập thông báo:", ref value) == DialogResult.OK)
    {
    txtThongBao.Text = value;
    }
    }
=> value sẽ được trả về sau khi form được nhập. bạn có thể có được kết quả là một DialogResult như một MessageBox bình thường của C#.

* Kết luận: Sử dụng MessageBox rất nhanh nhưng nhiều khi chúng ta cần phải customize lại các control để hợp với hoàn cảnh và cách sử dụng của bản thân

Đây là một control đơn giản phù hợp với tôi nhưng các bạn có thể customize lại để nó phù hợp với bản thân.


* Mediafire: http://www.mediafire.com/download/w7...essageBoxX.rar

* Fshare: http://www.fshare.vn/file/TLSEF6DM0W

* Google Drive: https://docs.google.com/file/d/0B38u...it?usp=sharing

* Infomation:

New view in the new world
Product: LapKan Company Product (LK)
Coder: Huygamer
Blog: huygamer.wordpress.com