我正在开发动漫列表以获得乐趣和练习,我创建了一个由1个linklabel组成的用户控件,该链接标签将调用一个表单,我需要将linklabel的标题传递给该标签将我的所有标签和链接标签设置为公开。
这是我的代码,我正在使用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();
}
答案 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