使用用户控件的linklabel并将值传递给表单

时间:2014-12-06 13:55:02

标签: c# mysql visual-studio-2012

我正在开发动漫列表以获得乐趣和练习,我创建了一个由1个linklabel组成的用户控件,该链接标签将调用一个表单,我需要将linklabel的标题传递给该标签将我的所有标签和链接标签设置为公开。

enter image description here



enter image description here


这是我的代码,我正在使用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();
  }

1 个答案:

答案 0 :(得分:0)

所以你想将LinkLabel的text属性传递给AnimeForm? ?如果是这种情况,那么您需要将Label设为公共,以便您能够从其他表单访问它。要做到这一点,你必须在属性窗口中更改 AnimeForm中的标签。

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

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

希望这有帮助。


确定。首先,如果您的用户控件只包含一个链接标签而没有其他逻辑或任何东西......那么您也可以使用链接标签。我假设您的用户控件名为List(有点让我与另一个类混淆)。另外,据我所知,您的数据加载代码是正确的。

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

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

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

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

顺便说一句,如果你认为解释对于这个简单的表达来说太复杂了,不要担心,我也这么认为:D