【问题标题】:using linklabel of a user control and pass the value to a form使用用户控件的链接标签并将值传递给表单
【发布时间】:2014-12-08 21:02:39
【问题描述】:

我正在开发动漫列表的乐趣和练习,我制作了一个包含 1 个链接标签的用户控件,该链接标签将调用一个表单,我需要将链接标签的标题传递给那个标签我的所有标签和链接标签都设置为公开。





这是我的代码,我正在使用 Visual Studio 2012 mysql 数据库

    void ReadLabel()<br>
    {
        int ctr = 0;
        //string myConnection = "datasource=localhost;port=3306;username=root;password=";
        MySqlConnection myConn = new MySqlConnection(myConnection);
        MySqlCommand command = myConn.CreateCommand();
        command.CommandText = "Select * FROM maindatabase.animelist";
        //command.Parameters.AddWithValue("?parameter",ctr.ToString()); 
       MySqlDataReader myReader;
        try
        {
           ctr++;
            myConn.Open();
            myReader = command.ExecuteReader();

            while (myReader.Read())
            {
                string Link = myReader["TitleAnime"].ToString();
                List li = new List();
                //AnimeForm ani = new AnimeForm();
                li.linkLabel1.Text = Link;
                li.linkLabel1.Click += linkLabel1_Click;
               // li.linkLabel1.Click = ani.Show();
                //if (li.linkLabel1.Text.Length > 0)
                //    li.linkLabel1.Text += Environment.NewLine;
                flowLayoutPanel1.Controls.Add(li);
                button4.Enabled = false;
            }


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        myConn.Close();
    }

  void linkLabel1_Click(object sender, EventArgs e)
  {
      AnimeForm ani = new AnimeForm();
      //ani.Title.Text = Link;
      ani.Show();
      //throw new NotImplementedException();
  }

【问题讨论】:

    标签: c# mysql visual-studio-2012


    【解决方案1】:

    所以您想将 LinkLabel 的文本属性传递给 AnimeForm? ?如果是这种情况,那么您需要将标签公开,以便您能够从其他表单访问它。为此,您必须在 AnimeForm 中的标签的属性窗口中更改 Modifiers 属性。

    之后,您将能够以您尝试的方式访问它:

    void linkLabel1_Click(object sender, EventArgs e)
      {
          AnimeForm ani = new AnimeForm();
          ani.Title.Text = Link;
          ani.Show();
      }
    

    希望这会有所帮助。


    好的。首先,如果您的用户控件只包含一个链接标签而没有额外的逻辑或任何东西......那么您不妨只使用链接标签。我假设您的用户控件称为 List(有点让我对另一个类感到困惑)。另外,据我所知,您的数据加载代码是正确的。

    问题是(如果您已经知道,请原谅我是 Obvious 先生)是您的事件处理程序没有获得正确的值来提供它正在创建的新 AnimeForm。

    您需要做的是获取被点击对象的文本。为此,您有 sender 参数。您必须将其转换为调用此事件处理程序的控件类型,在本例中为 LinkLabel。这将为您提供正在单击的 LinkLabel。完成后,您可以简单地访问它的 Text(不确定这是否是您需要的,但希望您明白这一点) 属性并将值赋予新创建的表单。

    如果我在上面输入的内容完全没有意义(我不太擅长解释),这就是你需要做的:

    void linkLabel1_Click(object sender, EventArgs e)
          {
              AnimeForm ani = new AnimeForm();
              ani.Title.Text = ((LinkLabel)sender).Text;
              ani.Show();
          }
    

    顺便说一句,如果你认为这个简单的表达方式的解释太复杂了,别担心,我也是这么认为的:D

    【讨论】:

    • Tnx 用于回复,但我已经将所有标签和链接标签设置为公共(修饰符)并尝试了您提供的代码,如果您注意到它已经在评论“//”中......以及什么发生的是它通过了最后一个标签..我想要实现的是每个动画形式都会通过每个标题..
    • 自定义控件实际上是什么样的(代码和设计)?
    • linklabel 的自定义控件只是 linklabel 而已。我的目标是从数据库中检索所有数据“标题”并将其存储在每个链接标签上(用户控件由 1 个链接标签组成),每个标签的点击事件将调用一个名为animeform 的新表单,并为每个包含标签的动画表单传递 1 个标题(公众)..我认为我的错误代码来自检索我认为与“使用”和“foreach”语句有关的数据。如果您能给我一些想法,将不胜感激。
    • 如果我的回答对您有帮助,请务必将您的问题标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多