0

フォーム (タイトル、年、ジャンルなどの映画情報) に入力して、テキスト ボックス (enable=false) に表示しようとしています。私は2つのクラスとフォーム(2つのテキストボックス(ユーザー入力用)、2つのボタン、映画情報を登録するための1つ、3番目のテキストボックス(無効になっているもの)に情報を表示するための1つ)を持っています。

class Movies
    {
        public string Title { get; set; }
        public int Year { get; set; }

        public string ReturnMovie()
        {
            return Title + " (" + Year.ToString() + ")";
        }
    }

class Genres
    {
        public string Genre { get; set; }

        public string ReturnGenre()
        {
            return Genre;
        }
    }

メインフォーム:

        bool btnRegisterClicked = false;

        Movies m1 = new Movies();
        Genres g1 = new Genres();

        private void btnRegister_Click(object sender, EventArgs e)
        {
            btnRegisterClicked = true;

            if (btnRegisterClicked == true)
            {
                if (txtTitle.Text.Length == 0)
                {
                    MessageBox.Show("Enter a title for the movie.");

                    btnRegisterClicked = false;
                }

                else if (txtYear.Text.Length < 4)
                {
                    MessageBox.Show("Enter a valid year.");

                    btnRegisterClicked = false;
                }

                else if (chkGenre.SelectedIndex == -1)
                {
                    MessageBox.Show("Select the genre(s) of the movie.");

                    btnRegisterClicked = false;
                }

                else
                {
                    txtTitle.Text = m1.Title;
                    txtYear.Text = m1.Year.ToString();
                    chkGenre.Text = g1.Genre;
                }

                txtTitle.Clear();
                txtYear.Clear();
                chkGenre.ClearSelected();
            }
        }

        private void btnShow_Click(object sender, EventArgs e)
        {
            txtShow.Text = m1.ReturnMovie() + g1.ReturnGenre();
        }
    }

私は何を間違っていますか?

4

2 に答える 2

5

あなたのブロックの割り当てelseは逆です。TextBoxと の初期化されていない内容に をm1設定しg1、すぐに.Clear()それらを ing します。

else
{
    m1.Title = txtTitle.Text;
    m1.Year = int.Parse(txtYear.Text);
    g1.Genre = chkGenre.Text
}
于 2013-01-09T14:10:46.827 に答える
2

コントロールではなく変数に値を割り当てる必要があります...、次のように変更します

        else
        {
            txtTitle.Text = m1.Title;
            txtYear.Text = m1.Year.ToString();
            chkGenre.Text = g1.Genre;
        }

        else
        {
            m1.Title = txtTitle.Text;
            m1.Year = int.Parse(txtYear.Text);
            g1.Genre = chkGenre.Text;
        }
于 2013-01-09T14:11:01.570 に答える