01/10/2018, 09:37

Vấn đề khác lại phát sinh khi vừa sửa xong lỗi c#, cứu em :(

hồi nãy anh @masoivn đã giúp e sửa cái ctrình rồi nhưng bây giờ lại lỗi, mục địch của cái form mà e đang làm là để lấy ngẫu nhiên các giá trị từ 1 tới 6 của label (những chuỗi đó đã đc lưu vào mảng), người dùng nhập vào 4 thì trả về 4 giá trị ngẫu nhiên trong các label cho trc,mới sửa xong nhập 3 vào thì ok, mà tới khi nhập 4 vào thì nó bị đơ, ai biết sửa lỗi giúp e với ạ :V

Khoa NTA viết 11:48 ngày 01/10/2018

Nếu không có liên quan tới vấn đề bản quyền thì bạn có thể post code lên được không? Như vậy sẽ tiện test lỗi hơn là dòm mỗi đoạn code này

Tao Không Ngu. viết 11:50 ngày 01/10/2018

Hi Hoàng Ngô
Sao mình thấy bạn code có gì đó sai sai nhỉ ?.
Bạn nêu lại yêu cầu bài toán xem. Thường thì ít khi để các vong lặp không biết khi nào dừng trong các file giao diện lắm vì nó làm treo luông giao diện.

P/S Code giao diện không làm vớ vẩn được đâu.

Hoàng Ngô viết 11:49 ngày 01/10/2018

Ok mình up cái form với code mình lên đây, mình code event chứ ko có code giao diện, giao diện mình lấy mấy cái có sẵn từ tool box

Hoàng Ngô viết 11:39 ngày 01/10/2018
indent preformatted text by 4 spaces    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 NgauNhienDeThi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    private void button1_Click(object sender, EventArgs e)
    {
        string[] dethi;
        dethi = new string[8];
        int data = Convert.ToInt32(dulieu.Text);
        Random ngaunhien = new Random();
        dethi[1] = label1.Text;
        dethi[2] = label2.Text;
        dethi[3] = label3.Text;
        dethi[4] = label4.Text;
        dethi[5] = label5.Text;
        dethi[6] = label6.Text;
        int kt1 = 1;
        int kq = 1;  
        for (int i=1;i <= data; i++)
        { 
            
            while (  kt1 % kq == 0)
            {
                 kq = ngaunhien.Next(1, 6);
            }
            ketqua.Text = ketqua.Text + "\n" + (dethi[kq]);
            
            kt1 *= kq; 


        }
    }
    //Xoa ket qua de nhap lại
    private void button2_Click(object sender, EventArgs e)
    {
        ketqua.Text = "";
        dulieu.Text = ""; 
    }
}

}

Hoàng Ngô viết 11:44 ngày 01/10/2018

Còn đây là cái form

Hoàng Ngô viết 11:46 ngày 01/10/2018

Em newbie mới học form đc vài ngày nên thử làm vài ứng dụng hài hài thôi các bác thông cảm nhe :V

Tao Không Ngu. viết 11:47 ngày 01/10/2018

Hi Hoàng Ngô
Banj dinh lam gi.

Hoàng Ngô viết 11:47 ngày 01/10/2018

trước vấn đề mọi người ko biết học bài văn nào mình định tạo ra 1 cái để ngẫu nhiên giúp mọi người đó mà :V

Tao Không Ngu. viết 11:44 ngày 01/10/2018

Hi Hoàng Ngô.
Bạn dùng lítview thay cho 6 label cố định. Tạo một thread để lấy ra ngẫu nhiên các phần tử của l=một lít các đề thì.

Hoàng Ngô viết 11:51 ngày 01/10/2018

Còn cách nào ko bác mình chỉ vừa học đc : label ,textbox,button,messagebox thôi và mình muốn tận dụng hết tác dụng của nó :v chưa dám học nữa vì sợ rối

Trọng Nguyễn viết 11:37 ngày 01/10/2018

data của bác là nhập từ textbox hử?

Tao Không Ngu. viết 11:53 ngày 01/10/2018

Hi Hoàng Ngô.
Mỗi control có một chức năng riêng và dùng trong các trường hợp riêng. Bạn nên học thêm một số đối tượng cơ bản nữa.
Còn về các chức năng của nó thì bạn cứ mở file code ra xem nó cung cấp các phương thức nào là có thể sừ dụng được nó.

docs.microsoft.com

Label Class (System.Windows.Forms)

Represents a standard Windows label.

Nêu không có gì đặc biệt thì mình khuyên bạn nên học ƯPF luôn.

TinBubu viết 11:38 ngày 01/10/2018

Bạn có thể sử dụng list và listBox trong winform nhé. Đây là kết quả không bị trùng khớp:

private void button6_Click(object sender, EventArgs e)
        {
           var soLuongNgauNhien =  int.Parse(textBox1.Text);
            var danhSachDethi = new List<string>
            {
                label1.Text,
                label2.Text,
                label3.Text,
                label4.Text,
                label5.Text,
                label6.Text,
            };

            var danhSachDethiTamThoi = danhSachDethi.Select(dethi => dethi).ToList();
            var ketQua = new List<string>();
            var ngauNhien = new Random();

            // for loop này sẽ chọn ngẫu nhiên vào không trùng lắp
            for (int i = 0; i < soLuongNgauNhien; i++)
            {
                var duocChonIndex = ngauNhien.Next(danhSachDethi.Count);
                var duocChon = danhSachDethiTamThoi.ElementAt(duocChonIndex);
                danhSachDethiTamThoi.RemoveAt(duocChonIndex);
                ketQua.Add(duocChon);
            }

            // dọn kết quả cũ
            listBox1.Items.Clear();

            // kết quả mới
            foreach (var dethi in ketQua)
            {
                listBox1.Items.Add(dethi);
            }
        }
Hoàng Ngô viết 11:50 ngày 01/10/2018

Ok mọi người mình sẽ qua list box

Minh viết 11:49 ngày 01/10/2018

2 biến kt1 và kq có làm gì vậy… nhìn mãi vẫn không hiểu công dụng 2 đứa nó.

Bài liên quan
0