Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Cắt 1 vài vị trí trong mảng 2 chiều các form C#?

  1. #1
    Ngày gia nhập
    06 2009
    Bài viết
    7

    Mặc định Cắt 1 vài vị trí trong mảng 2 chiều các form C#?

    Chào các bạn , mình đang có vấn đề này mà mình nghĩ mãi ko ra cách giải quyết , các bạn giúp mình với . Cảm ơn các bạn !

    Như trên hình các bạn sẽ thấy , đây là 1 mảng 2 chiều , gồm số hàng và số cột .
    mình đang muốn cắt đi 1 hoặc nhiều vị trí .
    VD nếu như ko cắt bất kỳ vị trí nào thì mảng 2 chiều này gồm 20 thành viên , đc đánh số từ 1 đến 20.
    nếu cắt đi 1 thành viên , giả sử vị trí thứ 1 . thì mảng chỉ còn 19 thành viên và đc đánh thứ tự từ 1 - 19, hình ở hàng 1, cột 1 sẽ biến mất .
    tương tự như thế , nếu cắt đi bao nhiêu thành viên thì số thành viên còn lại sẽ bằng (số hàng * số côt) - số thành viên bị cắt . như trong hình , giả sử mình đánh dầu đỏ 4 hình , nếu mình cắt đi 4 hình đó , thì số thành viên trong mảng sẽ còn lại là 16 và đc đánh dấu từ 1 -16.
    đây là hình sau khi cắt .
    à nhân tiện cho mình hỏi , các bạn có ai ko biết mảng 2 chiều ko ?
    To MOD : sao ko sửa đc bài viết vậy nhỉ ?




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

    Bạn có thể sử dụng giá trị của mảng đó để qui ước, ví dụ ô [i,j] bị cắt thì bạn đặt a[i,j]=0, ngược lại thì bạn đặt =1, bằng cách này bạn có thể đặt nhiều trạng thái cho a[i,j].
    Hoặc bạn có thể dùng mảng boolean để đánh dấu.
    Ngoài ra, nếu trên winform thì bạn có thể sử dụng thuộc tính Visible để đánh dấu cũng có thể được.


    Trả lời câu hỏi thứ 2 của bạn luôn: Mình cũng không biết mảng 2 chiều là cái gì cả! - Tiêu đề trung trung quá!

  3. #3
    Ngày gia nhập
    06 2009
    Bài viết
    7

    Cảm ơn bạn!
    các hình này là 1 user control mình cho nó tự sinh bằng code . đến đoạn cắt thì mình ko in nó ra mà thôi
    mình cũng chưa thử set visiable cho nó .
    về câu hỏi phụ , mình cũng chỉ biết nó có thể đc gọi là mảng 2 chiều , hay ma trận gì đó . còn lại cũng ko biết nó là cái gì . Mình nông cạn rồi !

  4. #4
    Ngày gia nhập
    07 2010
    Bài viết
    99

    bạn có thể dùng ma trận bool để đánh dấu. rồi hiển thị các control dựa vào ma trận đó. đây là project demo của mình. hy vọng là đúng với ý của bạn muốn hỏi.
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi nhquynam : 08-05-2012 lúc 01:27 PM.
    Never try, never know

  5. #5
    Ngày gia nhập
    06 2009
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi nhquynam Xem bài viết
    bạn có thể dùng ma trận bool để đánh dấu. rồi hiển thị các control dựa vào ma trận đó. đây là project demo của mình. hy vọng là đúng với ý của bạn muốn hỏi.
    cảm ơn bạn đã trả lời , mình đã xem demo của bạn rồi , nhưng bài toán của mình khác ở chỗ là user control của mình đc tự sinh ra. VD như in ra ma trận đầy đủ .
    Code:
    for(int k = 0;k <= dt.Rows.Count; k++)
                {
                    //  các vị trí khuyết mình đưa vào datatable , với 2 cột (số hàng và số cột). nếu khuyết nhiều vị trí thì datatable sẽ có nhiều dòng.
                    int h = 0, c = 0;
                    if (k < dt.Rows.Count)
                    {
                        h = int.Parse(dt.Rows[k]["Hang"].ToString());
                        c = int.Parse(dt.Rows[k]["Cot"].ToString());                    
                    }
                    for (int j = 1; j <= sh;j++ )
                    {
                        for (int i = 1; i <= sc;i++ )
                        {
                            if (j == h && i == c) { 
                                  //  đoạn này cần viết để tiếp tục vòng lặp 
                                  //  yêu cầu trước tiên là  : k phải tăng . nếu i < sc thì i cũng tăng. nếu i = sc, j tăng , i =1
                            }
                            else if (a <= sm)
                            {
                                if (i == 1 && j == 1) { x = 0; y = 0; }
                                else if (i == 1) { x = 0; y = 79 * (j - 1); }
                                else if (j == 1) { y = 0; x = 70 * (i - 1); }
                                else
                                {
                                    x = 70 * (i - 1);
                                    y = 79 * (j - 1);
                                }
                                ComputerControl.Computer computer = new ComputerControl.Computer(a);
                                gb.Controls.Add(computer);
                                computer.Location = new System.Drawing.Point(x, y);
                                a++;
                            }
                        }
                    }
                }
    in đầy đủ thì đơn giản rồi , đến trường hợp khuyết 1 vài vị trí . đến đây thì mình chưa giải quyết đc .
    bạn nào gỡ rối hộ mình với .
    Cảm ơn các bạn !
    Đã được chỉnh sửa lần cuối bởi thinhmiss : 08-05-2012 lúc 03:03 PM.

  6. #6
    Ngày gia nhập
    07 2010
    Bài viết
    99

    Mặc định Cắt 1 vài vị trí trong mảng 2 chiều các form C#?

    cái project của mình là demo thôi. mình cũng ko rõ cách bạn hiển thị các control như thế nào.
    bạn có thể làm như vầy :
    Visual C# Code:
    1. for(int k = 0;k <= dt.Rows.Count; k++)
    2.             {
    3.                 //  các vị trí khuyết mình đưa vào datatable , với 2 cột (số hàng và số cột). nếu khuyết nhiều vị trí thì datatable sẽ có nhiều dòng.
    4.                 int h = 0, c = 0;
    5.                 if (k < dt.Rows.Count)
    6.                 {
    7.                     h = int.Parse(dt.Rows[k]["Hang"].ToString());
    8.                     c = int.Parse(dt.Rows[k]["Cot"].ToString());                    
    9.                 }
    10.                 for (int j = 1; j <= sh;j++ )
    11.                 {
    12.                     for (int i = 1; i <= sc;i++ )
    13.                     {
    14.                         if ((j != h || i != c) && a <= sm)
    15.                         {
    16.                             if (i == 1 && j == 1) { x = 0; y = 0; }
    17.                             else if (i == 1) { x = 0; y = 79 * (j - 1); }
    18.                             else if (j == 1) { y = 0; x = 70 * (i - 1); }
    19.                             else
    20.                             {
    21.                                 x = 70 * (i - 1);
    22.                                 y = 79 * (j - 1);
    23.                             }
    24.                             ComputerControl.Computer computer = new ComputerControl.Computer(a);
    25.                             gb.Controls.Add(computer);
    26.                             computer.Location = new System.Drawing.Point(x, y);
    27.                             a++;
    28.                         }
    29.                     }
    30.                 }
    31.             }
    Đã được chỉnh sửa lần cuối bởi nhquynam : 08-05-2012 lúc 05:01 PM.
    Never try, never know

  7. #7
    Ngày gia nhập
    06 2009
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi nhquynam Xem bài viết
    bạn có thể dùng ma trận bool để đánh dấu. rồi hiển thị các control dựa vào ma trận đó. đây là project demo của mình. hy vọng là đúng với ý của bạn muốn hỏi.
    user control của mình như 1 button bình thường thôi .
    mình làm đc rồi , nhưng dùng đến goto , nhìn đau mắt phết

    Code:
                int k = 0, j = 1,i=1,i1=1;
            lap:
                while(k <= dt.Rows.Count)
                {
                    int h = 0, c = 0;
                    if (k < dt.Rows.Count)
                    {
                        h = int.Parse(dt.Rows[k]["Hang"].ToString());
                        c = int.Parse(dt.Rows[k]["Cot"].ToString());                    
                    }
                    while(j <= sh)
                    {
                        i = i1;
                        while(i <= sc)
                        {
                            if (j == h && i == c) {
                                if (i < sc)
                                {
                                    k++;
                                    i1 = ++i;
                                    goto lap;
                                }
                                else {
                                    k++;
                                    j++;
                                    i1 = 1;
                                    goto lap;
                                }
                            }
                            else if (a <= sm)
                            {
                                if (i == 1 && j == 1) { x = 0; y = 0; }
                                else if (i == 1) { x = 0; y = 79 * (j - 1); }
                                else if (j == 1) { y = 0; x = 70 * (i - 1); }
                                else
                                {
                                    x = 70 * (i - 1);
                                    y = 79 * (j - 1);
                                }
                                ComputerControl.Computer computer = new ComputerControl.Computer(a);
                                gb.Controls.Add(computer);
                                computer.Location = new System.Drawing.Point(x, y);
                                a++;
                                i++;
                                if (i > sc && j < sh) { j++; ; i1 = 1; }
                                else if (j == sh && i > sc) { k++; j++; }
                            }
                        }
                    }
                }

Các đề tài tương tự

  1. [Hỏi] Chia Form Làm 2 để thu nhỏ form?
    Gửi bởi vophatnguyen1994 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 13-09-2013, 11:29 AM
  2. Trả lời: 1
    Bài viết cuối: 28-04-2012, 09:43 PM
  3. Cách Refresh Form trong 1 hàm thuộc 1 class khác, mà được gọi trong form đó?
    Gửi bởi troy91 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 14-04-2012, 10:13 PM
  4. Graphic Làm sao để form không maximize chiều ngang ?
    Gửi bởi usercdcv trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 29-12-2011, 11:07 PM
  5. Chia sẻ dữ liệu với mainThread của form
    Gửi bởi tauit_dnmd trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 01-06-2010, 07:57 PM

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