vikil chandrapati Ответов: 1

Срочно, я не знаю, что не так с кодом


Я не знаю, что не так, но внезапно этот код перестал работать, компилятор не выдает ошибок, и проблема, кажется, возникает из ниоткуда. когда я нажимаю кнопку 1, он запускает этот код, который берет тег кнопки и запускает его через массив, чтобы увидеть, есть ли совпадения, и если есть совпадение, то он выводит массив, который он соответствует, в текстовое поле.

Что я уже пробовал:

Эта строка кода
Arraytxt.Text = Arraytxt.Text + book.ToString() + Environment.NewLine;

отображается ли результат, отличный от того, что отображалось в остальной части кода при использовании точки останова
<pre lang="c#">private void Form1_Load(object sender, EventArgs e)
        {
            //Book Array
            MyBooks.Add(new Book("Book 1", 15));
            MyBooks.Add(new Book("Manga vol 1-15", 39));
            MyBooks.Add(new Book("Novels 1-199", 19));
            MyBooks.Add(new Book("Novels 200-400", 35));
            MyBooks.Add(new Book("Comics series mainstream", 19));
            MyBooks.Add(new Book("Comics series secondary", 10));
            MyBooks.Add(new Book("Text book 1 semester/2 modules", 40));
            MyBooks.Add(new Book("Text book module add-ons", 15));
            MyBooks.Add(new Book("Harcover", 3));
            dataGridView1.Columns["Price"].Visible = false;
        }
private void BtnGlobal_Click(object sender, EventArgs e)
foreach (Book book in MyBooks)
                {
                    if (BtnGlobal.Text == book.BookName)
                    {
                        Arraytxt.Text = Arraytxt.Text + book.ToString() + Environment.NewLine;
                    }
                }

1 Ответов

Рейтинг:
10

OriginalGriff

Вряд ли.
Это делает именно то, что я ожидал бы от него:

private class Book
    {
    public string BookName { get; set; }
    public int Pages { get; set; }
    public Book(string s, int p)
        {
        BookName = s;
        Pages = p;
        }
    }

List<Book> MyBooks = new List<Book>();
MyBooks.Add(new Book("Book 1", 15));
MyBooks.Add(new Book("Manga vol 1-15", 39));
MyBooks.Add(new Book("Novels 1-199", 19));
MyBooks.Add(new Book("Novels 200-400", 35));
MyBooks.Add(new Book("Comics series mainstream", 19));
MyBooks.Add(new Book("Comics series secondary", 10));
MyBooks.Add(new Book("Text book 1 semester/2 modules", 40));
MyBooks.Add(new Book("Text book module add-ons", 15));
MyBooks.Add(new Book("Harcover", 3));
Label Arraytxt = new Label();
foreach (Book book in MyBooks)
    {
    if (BtnGlobal.Text == book.BookName)
        {
        Arraytxt.Text = Arraytxt.Text + book.ToString() + Environment.NewLine;
        }
    }
Отображает текст, который я ожидаю:
OneOffJobs.FrmMain+Book

Если вы ожидаете, что он покажет название книги, то вам нужно переопределить ToString в вашем классе Book:
public override string ToString()
    {
    return $"{BookName}:{Pages}";
    }

Как вы получите:
Novels 200-400:35


OriginalGriff

Возможно, потому, что вы неправильно написали "Твердый переплет", когда добавляли предметы? :смеяться: