Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: Cách chọn nhiều hiệu ứng font chữ?

  1. #1
    Ngày gia nhập
    11 2014
    Bài viết
    25

    Mặc định Cách chọn nhiều hiệu ứng font chữ?

    Mình làm 1 cái ứng dụng format chữ, có mấy cái checkbox như hình đính kèm, mình làm được tạo từng hiệu ứng 1 rồi, nhưng mình ko nghĩ ra làm sao để chọn nhiều ô thì nó cộng hết các hiệu ứng lại, vd như trong hình thì đáng lẽ chọn 3 ô thì nó phải có cả 3 hiệu ứng nhưng nó chỉ nhận hiệu ứng chọn cuối cùng cụ thể ở đây là Underline.
    Mình nghĩ ra cách là tạo 1 biến bool isMultiChoice nếu checkbox nào checked thì isMultiChoice = true, rồi tạo 1 method riêng applyMultiChoice xử lý rằng nếu isMultiChoice = true thì tạo hiệu ứng kết hợp.
    Câu hỏi là cái method applyMultiChoice đặt ở đâu? để chương trình tự xử lý khi chọn nhiều checkbox? còn làm thủ công kiểu tạo thêm 1 cái button rồi gán applyMultiChoice vào thì mình biết nhưng nó thừa thải quá vì xử lý thực tế chẳng ai làm vậy.
    Mong mọi người góp ý, chân thành cảm ơn!
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		format.jpg
Lần xem:	28
Size:		85.5 KB
ID:		24163
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    11 2014
    Bài viết
    25

    Trích dẫn Nguyên bản được gửi bởi davidmartin Xem bài viết
    Mình làm 1 cái ứng dụng format chữ, có mấy cái checkbox như hình đính kèm, mình làm được tạo từng hiệu ứng 1 rồi, nhưng mình ko nghĩ ra làm sao để chọn nhiều ô thì nó cộng hết các hiệu ứng lại, vd như trong hình thì đáng lẽ chọn 3 ô thì nó phải có cả 3 hiệu ứng nhưng nó chỉ nhận hiệu ứng chọn cuối cùng cụ thể ở đây là Underline.
    Mình nghĩ ra cách là tạo 1 biến bool isMultiChoice nếu checkbox nào checked thì isMultiChoice = true, rồi tạo 1 method riêng applyMultiChoice xử lý rằng nếu isMultiChoice = true thì tạo hiệu ứng kết hợp.
    Câu hỏi là cái method applyMultiChoice đặt ở đâu? để chương trình tự xử lý khi chọn nhiều checkbox? còn làm thủ công kiểu tạo thêm 1 cái button rồi gán applyMultiChoice vào thì mình biết nhưng nó thừa thải quá vì xử lý thực tế chẳng ai làm vậy.
    Mong mọi người góp ý, chân thành cảm ơn!
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		format.jpg
Lần xem:	28
Size:		85.5 KB
ID:		24163
    Vẫn ko ai biết vấn đề này à?

  3. #3
    Ngày gia nhập
    08 2012
    Bài viết
    574

    Không giúp chắc vì ai cũng thấy nó đơn giản.
    Ctrl + Space is your friend!
    Exception is your teacher!

    Java: http://docs.oracle.com/javase/7/docs/api/overview-summary.html
    .NET: http://msdn.microsoft.com/en-us/library/gg145045(v=vs.110).aspx

  4. #4
    Ngày gia nhập
    11 2014
    Bài viết
    25

    Trích dẫn Nguyên bản được gửi bởi SITUVNX Xem bài viết
    Không giúp chắc vì ai cũng thấy nó đơn giản.
    Đơn giản vậy bạn chải mình với, đến giờ mình vẫn ko nghĩ ra làm sao giữ nhiều hiệu ứng khi chọn nhiều checkbox, còn cách làm sao chọn nhiều checkbox thì mình biết rồi.

  5. #5
    Ngày gia nhập
    08 2012
    Bài viết
    574

    Bạn đưa đoạn mã của bạn cho mình xem.
    Ctrl + Space is your friend!
    Exception is your teacher!

    Java: http://docs.oracle.com/javase/7/docs/api/overview-summary.html
    .NET: http://msdn.microsoft.com/en-us/library/gg145045(v=vs.110).aspx

  6. #6
    Ngày gia nhập
    11 2014
    Bài viết
    25

    Mặc định Cách chọn nhiều hiệu ứng font chữ?

    Trích dẫn Nguyên bản được gửi bởi SITUVNX Xem bài viết
    Bạn đưa đoạn mã của bạn cho mình xem.
    Code của mình nè:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Formatter
    {
        public partial class Form1 : Form
        {
           
            public Form1()
            {
                InitializeComponent();
            }
    		// khi nhập trên textbox thì label cũng sẽ hiển thị cùng lúc.
            private void txtBox_TextChanged(object sender, EventArgs e)
            {
                lblHienThi.Text = txtTen.Text;
            }
    		// xử lý nút thoát.
            private void btnThoat_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    		// mặc định màu chữ là đỏ lúc chạy chương trình.
            private void Form1_Load(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Red;
                lblHienThi.ForeColor = Color.Red;
                
            }
    		// xử lý khi chọn radio đỏ.
            private void radRed_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Red;
                lblHienThi.ForeColor = Color.Red;
            }
    		// xử lý khi chọn radio xanh lá.
            private void radGreen_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Green;
                lblHienThi.ForeColor = Color.Green;
            }
    		// xử lý khi chọn radio xanh nước biển.
            private void radBlue_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Blue;
                lblHienThi.ForeColor = Color.Blue;
            }
    		// xử lý khi chọn radio đen.
            private void radBlack_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Black;
                lblHienThi.ForeColor = Color.Black;
            }
    		// xử lý khi chọn checkbox in đậm.
            private void chckBold_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Bold);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Bold);
            }
    		// xử lý khi chọn checkbox in nghiêng.
            private void chckItalic_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Italic);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Italic);
            }
    		// xử lý khi chọn checkbox gạch chân.
            private void chckUnderline_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Underline);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Underline);
            }
    
        }
    }
    Bây giờ mình muốn có thể chọn nhiều checkbox cùng lúc và pha trộn được hiệu ứng của nó, vd: chọn in đậm + in nghiêng + gạch chân cùng lúc thì chữ sẽ có cả 3 thuộc tính đó.
    À cho mình hỏi thêm tại sao checkbox chỉ cho chọn mà ko thể bỏ chọn? mình nghĩ cái bỏ chọn phải là thuộc tính mặc định chứ hay là phải chỉnh sửa gì nữa?

  7. #7
    Ngày gia nhập
    11 2013
    Nơi ở
    TP HCM
    Bài viết
    341

    Đã thông kinh mạch cho tân thủ C#:

    1> Vấn đề apply cùng lúc các thuộc tính của 1 control
    - Cách 1: kéo thả và chỉnh thuộc tính của 1 control (vd: font-family, size, location,..) bằng tools trên visual studio thì sau khi chỉnh xong thuộc tính bạn hãy mở code của phần design xem nó đã thay đổi những gì
    - VD cho trường hợp trên là chọn 3 loại thuộc tính đậm-in nghiêng-gạch chân => chỉnh label control đấy với 3 thuộc tính của font = tool ở tab Properties => xong mở phần design code ra xem tool điều khiển việc tự sinh code cho thuộc tính Font của label control => theo đó mà code
    - Cách 2: Khi code bấm new Font( <= visual studio sẽ hiện code hint và có hiễn thị cho bạn tất cả các params của method được gọi => theo đó mà bổ sung các giá trị params cần thiết.

    * Tương tự cho các controls khác nếu muốn code được những gì liên quan thuộc tính, method params thì phải biết dùng tool và xem code tự sinh nó là gì hoặc nhìn vào code hint.

    2> Vấn đề Radio Control
    - Radio thường được sử dụng cho việc chọn chỉ 1 giữa các tùy chọn (group radios)
    - Muốn bỏ chọn radio chỉ việc gán giá trị checked = false cho nó

    P/S: Học lập trình thì nên cần tìm hiểu các thủ thuật mặc dù code tự sinh nó đã nằm hết trong phần design khi dùng tool và hiện toàn bộ trong code hint... vấn đề là bạn có quan tâm tới nó không? Có chịu tò mò xem nó là gì không? Hay chỉ là học vẹt, đơn giản 1 TextBox Control thì nó đâu chỉ có .Text => mà nó còn có nhiều thuộc tính. Và Font nó đâu chỉ có params là new Font(Name, Size, FontStyle) => mà nó còn có đến 13 nhóm params khác nhau. => Lập trình học cơ bản chỉ có 1 nhưng tự học thêm 9 nữa mới đủ 10 bạn nhé!

  8. #8
    Ngày gia nhập
    11 2014
    Bài viết
    25

    Trích dẫn Nguyên bản được gửi bởi hero4vn Xem bài viết
    Đã thông kinh mạch cho tân thủ C#:

    1> Vấn đề apply cùng lúc các thuộc tính của 1 control
    - Cách 1: kéo thả và chỉnh thuộc tính của 1 control (vd: font-family, size, location,..) bằng tools trên visual studio thì sau khi chỉnh xong thuộc tính bạn hãy mở code của phần design xem nó đã thay đổi những gì
    - VD cho trường hợp trên là chọn 3 loại thuộc tính đậm-in nghiêng-gạch chân => chỉnh label control đấy với 3 thuộc tính của font = tool ở tab Properties => xong mở phần design code ra xem tool điều khiển việc tự sinh code cho thuộc tính Font của label control => theo đó mà code
    - Cách 2: Khi code bấm new Font( <= visual studio sẽ hiện code hint và có hiễn thị cho bạn tất cả các params của method được gọi => theo đó mà bổ sung các giá trị params cần thiết.

    * Tương tự cho các controls khác nếu muốn code được những gì liên quan thuộc tính, method params thì phải biết dùng tool và xem code tự sinh nó là gì hoặc nhìn vào code hint.

    2> Vấn đề Radio Control
    - Radio thường được sử dụng cho việc chọn chỉ 1 giữa các tùy chọn (group radios)
    - Muốn bỏ chọn radio chỉ việc gán giá trị checked = false cho nó

    P/S: Học lập trình thì nên cần tìm hiểu các thủ thuật mặc dù code tự sinh nó đã nằm hết trong phần design khi dùng tool và hiện toàn bộ trong code hint... vấn đề là bạn có quan tâm tới nó không? Có chịu tò mò xem nó là gì không? Hay chỉ là học vẹt, đơn giản 1 TextBox Control thì nó đâu chỉ có .Text => mà nó còn có nhiều thuộc tính. Và Font nó đâu chỉ có params là new Font(Name, Size, FontStyle) => mà nó còn có đến 13 nhóm params khác nhau. => Lập trình học cơ bản chỉ có 1 nhưng tự học thêm 9 nữa mới đủ 10 bạn nhé!
    Cảm ơn bạn chỉ tận tình nhưng mấy cái bạn chỉ mình biết rồi, có vẻ như do cách mình diễn đạt nên ko ai hiểu mình muốn hỏi gì phải ko nhỉ? tức là mình có thể tùy chỉnh mọi hiệu ứng cho 1 control bất kỳ, nhưng với nhiều control cùng lúc cụ thể là 3 checkbox thì mình ko làm được, vì khi double click vào 1 control thì VS phát sinh 1 method cho mình xử lý tình huống là chọn control đó, nhưng ở đây tình huống là chọn cùng lúc 3 cái thì làm sao để VS nó phát sinh đây?
    VD: bên giao diện khi mình double click vào checkbox in đậm thì VS phát sinh cho mình method:
    Code:
    // xử lý khi chọn checkbox in đậm.
            private void chckBold_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Bold);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Bold);
            }
    Thế giờ mình phải làm gì để nó phát sinh cho mình 1 method nhưng có thể xử lý n control? với n là số control bất kỳ? mình đâu thể double click cùng lúc 3 cái checkbox?
    Mình có phương án là viết 1 method riêng nhận lệnh xử lý 3 checkbox cùng lúc, nhưng cái gì sẽ gọi cái method này? vì mình ko muốn thêm bất cứ 1 control nào lên giao diện nữa nên phương án này ko khả thi rồi.
    Mình có lên stackoverflow và forum của microsoft xem những topic tương tự nhưng nó ko đúng ý mình, mình tìm với từ khóa này ko biết đúng ko nhỉ: how to choose multiple textbox in C#

  9. #9
    Ngày gia nhập
    11 2013
    Nơi ở
    TP HCM
    Bài viết
    341

    Nếu như bạn biết lắng nghe và làm theo những hướng dẫn mà mình nói => apply 3 thuộc tính(đậm-nghiêng-gạch chân) cho 1 label và mở phần code design ra xem thì bạn sẽ thấy được đoạn code này:

    Visual C# Code:
    1. new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)(((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)
    2.                 | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));

    * Còn việc các control cùng 1 kiểu thì có thể sử dụng chung 1 phương thức sự kiện nhé. Thử tự mình mò code xem!

  10. #10
    Ngày gia nhập
    11 2014
    Bài viết
    25

    Trích dẫn Nguyên bản được gửi bởi hero4vn Xem bài viết
    Nếu như bạn biết lắng nghe và làm theo những hướng dẫn mà mình nói => apply 3 thuộc tính(đậm-nghiêng-gạch chân) cho 1 label và mở phần code design ra xem thì bạn sẽ thấy được đoạn code này:
    * Còn việc các control cùng 1 kiểu thì có thể sử dụng chung 1 phương thức sự kiện nhé. Thử tự mình mò code xem!
    Sảng khoái gì đâu, nhờ câu nói này của bạn mà mình khôn ra, làm được rồi, phải chi từ đầu bạn nói câu này sớm thì đã ko phải mất nhiều thời gian như vậy. Mình làm được rồi, đây là cách làm của mình để sau này có bạn nào bị giống vậy thì biết cách giải quyết:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Text.RegularExpressions;
    
    namespace Formatter
    {
        public partial class Form1 : Form
        {   
            public Form1()
            {
                InitializeComponent();
            }
    		// khi nhập trên textbox thì label cũng sẽ hiển thị cùng lúc.
            private void txtBox_TextChanged(object sender, EventArgs e)
            {
                lblHienThi.Text = txtTen.Text;
            }
    		// xử lý nút thoát.
            private void btnThoat_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    		// mặc định màu chữ là đỏ lúc chạy chương trình.
            private void Form1_Load(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Red;
                lblHienThi.ForeColor = Color.Red;
                
            }
    		// xử lý khi chọn radio đỏ.
            private void radRed_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Red;
                lblHienThi.ForeColor = Color.Red;
            }
    		// xử lý khi chọn radio xanh lá.
            private void radGreen_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Green;
                lblHienThi.ForeColor = Color.Green;
            }
    		// xử lý khi chọn radio xanh nước biển.
            private void radBlue_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Blue;
                lblHienThi.ForeColor = Color.Blue;
            }
    		// xử lý khi chọn radio đen.
            private void radBlack_CheckedChanged(object sender, EventArgs e)
            {
                txtTen.ForeColor = Color.Black;
                lblHienThi.ForeColor = Color.Black;
            }
    		// xử lý khi chọn checkbox in đậm.
            private void chckBold_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Bold);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Bold);
            }
    		// xử lý khi chọn checkbox in nghiêng.
            private void chckItalic_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Italic);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Italic);
            }
    		// xử lý khi chọn checkbox gạch chân.
            private void chckUnderline_CheckedChanged(object sender, EventArgs e)
            {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Underline);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Underline);
            }
            // xử lý tất cả trường hợp chọn checkbox.
            private void chooseThreeCheckBox(object sender, EventArgs e)
            {
                // chọn cả 3 cùng lúc.
                if (chckBold.Checked == true && chckItalic.Checked == true && chckUnderline.Checked == true)
                {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Bold | FontStyle.Italic | FontStyle.Underline);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Bold | FontStyle.Italic | FontStyle.Underline);
                }
                    // chỉ in đậm.
                else if (chckBold.Checked == true && chckItalic.Checked == false && chckUnderline.Checked == false)
                {
                    this.chckBold_CheckedChanged(sender, e);
                }
                    // chỉ in nghiêng.
                else if (chckItalic.Checked == true && chckBold.Checked == false && chckUnderline.Checked == false)
                {
                    this.chckItalic_CheckedChanged(sender, e);
                }
                    // chỉ gạch chân.
                else if (chckUnderline.Checked == true && chckBold.Checked == false && chckItalic.Checked == false)
                {
                    this.chckUnderline_CheckedChanged(sender, e);
                }
                // in đậm và gạch chân.
                else if (chckBold.Checked == true && chckUnderline.Checked == true && chckItalic.Checked == false)
                {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Bold | FontStyle.Underline);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Bold | FontStyle.Underline);
                }
                // in đậm và in nghiêng.
                else if (chckBold.Checked == true && chckItalic.Checked == true && chckUnderline.Checked == false)
                {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Bold | FontStyle.Italic);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Bold | FontStyle.Italic);
                }
                // in gạch chân và in nghiêng.
                else if (chckUnderline.Checked == true && chckItalic.Checked == true && chckBold.Checked == false)
                {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Italic | FontStyle.Underline);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Italic | FontStyle.Underline);
                }
                //ko chọn hiệu ứng nào hết.
                else
                {
                    txtTen.Font = new Font(txtTen.Font.Name, txtTen.Font.Size, FontStyle.Regular);
                    lblHienThi.Font = new Font(lblHienThi.Font.Name, lblHienThi.Font.Size, FontStyle.Regular);
                }
            }
        }
    }
    Có thể thuật toán chưa gọn, nhưng mình nghĩ đây là cách basic nhất, ai sáng dạ hơn mình thì sẽ nghĩ ra cách khác ngắn hơn.
    Một lần nữa cảm ơn bạn @hero4vn đã nhiệt tình giúp đỡ. CLOSE TOPIC.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn