【问题标题】:How do i call this method again on button_click如何在 button_click 上再次调用此方法
【发布时间】:2016-04-20 16:51:06
【问题描述】:

所以我所拥有的基本上是这样的:

public partial class ShowList : UserControl
{
    public int count;
    private static LoadMovies lm = new LoadMovies();
    public List<Movie> movieList = lm.GetMovieList();

    public ShowList(string genreTitel)
    {
        InitializeComponent();
        ......
        ......
        Load(genreTitel)
    }

    public void Load(string genreTitel)
    {
        lm.ReadMoviesToList();
        string picturepath = Environment.CurrentDirectory + @"\Pictures" + @"\Pictures\";
        IEnumerable<Movie> genreMovieList =
        movieList.Where(m => m.MovieGenres.Contains(genreTitel) && m.MovieNumberOfRatings > 80).Take(20);

        Movie movie1 = genreMovieList.ElementAt(count);
        label29.Text = movie1.MovieName;
        pictureBox9.Image = Image.FromFile(picturepath + movie1.MovieId + ".jpg");
        label24.Text = "Rating: " + Math.Round(movie1.MovieAverageRating, 2);
    }

    private void Btn_Click(object sender, EventArgs e)
    {
        count++;
        //HERE I NEED SOME CODE TO RELOAD LOAD-METHOD.
    }

我尝试过的只是写 Load();但由于该方法需要genreTitel。而且我无法到达genreTitel。 单击按钮时如何增加计数并重新加载 Load(genreTitel)?

【问题讨论】:

    标签: c# forms events button


    【解决方案1】:

    将genreTitel(标题?)保存到一个私有变量中。在构造函数中将传入的变量赋值给新的私有变量,然后你就可以从 Btn_Click 访问它了。

    【讨论】:

      【解决方案2】:

      在你的movielist声明下声明一个字符串genreTitel(或者你想要的任何名字),然后在你第一次在构造函数中调用Load(genreTitel)之前,做:

      this.genreTitel = GenreTitel。

      这样你就有了一个可供类的其余部分访问的genreTitle 变量

      【讨论】:

        【解决方案3】:

        假设您从某个表单字段获取genreTitel,您可以在 Click 事件处理程序中访问该字段。

        因此,您尝试简单地输入Load(),请使用Load(formField.Text)

        编辑:刚刚注意到ShowList(string genreTitel) 是构造函数,而不是方法。

        在这种情况下,实例化一个私有变量并在构造函数中将genreTitel 分配给它。

        【讨论】:

          【解决方案4】:

          这样做

          //declare the class level variable like this
          private string mgenretitle;
          
          public ShowList(string genreTitel)
          {
              // initialize the variable over here like this
              mgenretitle = genreTitel;
              InitializeComponent();
              ......
              ......
              Load(genreTitel)
          }
          

          然后在这里使用它

          private void Btn_Click(object sender, EventArgs e)
          {
                count++;
                // call your load method over here
                Load(mgenretitle);
                //HERE I NEED SOME CODE TO RELOAD LOAD-METHOD.
          }
          

          【讨论】:

          • 这是不可能的。我无法到达构造函数中的变量。那是我的问题。
          • 为什么不可能?
          • 抱歉,错过了私有字符串。这解决了问题!谢谢!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-03
          • 2012-05-24
          • 2019-04-01
          • 2011-04-07
          • 1970-01-01
          相关资源
          最近更新 更多