【问题标题】:Trouble creating user control in C#在 C# 中创建用户控件时遇到问题
【发布时间】:2016-02-28 02:20:40
【问题描述】:

我正在用 C# 创建一个用户控件,但我不知道如何处理事件。我想在鼠标悬停时更改面板的背景色属性,但它不起作用。

代码:

public partial class QuestionList : UserControl
{
    public QuestionList()
    {
        InitializeComponent();
    }

    public struct QuestionListItem
    {
        public string Question { get; set; }
        public string Answer { get; set; }

        public QuestionListItem(string question, string answer)
        {
            Question = question;
            Answer = answer;
        }
    }

    public void Add(QuestionListItem questionlistItem)
    {
        Panel panel = new Panel();
        panel.Dock = DockStyle.Top;

        Label label = new Label();
        label.MouseHover += Label_MouseHover;
        label.Dock = DockStyle.Fill;
        label.Text = questionlistItem.Question;
        panel.Controls.Add(label);

        Controls.Add(panel);
    }

    //Here (no idea what I just did..)
    private void Label_MouseHover(Object sender, EventArgs e)
    {
        Label label = (Label)sender;
        Panel panel = (Panel)label.Container;
        panel.BackColor = Color.Red;
    }
}

【问题讨论】:

    标签: c# .net winforms user-controls panel


    【解决方案1】:

    我认为您已正确添加了事件处理程序。问题在于您放入事件处理程序的行:

    Panel panel = (Panel)label.Container;
    

    应该是

    Panel panel = (Panel)label.Parent;
    

    将 Container 更改为 Parent。

    另外,我认为最好使用 VS 设计器来测试什么是事件处理程序的强类型签名。在您的签名中,您使用 EventArgs。我认为应该改为 MouseEventArgs。

    【讨论】:

    • 天哪,谢谢它有效!祝你有美好的一天:DD
    • 哦,是你。直到现在我才检查我的旧线程,赞成良好的逻辑答案。感谢您提供的即时有用的帮助,您是个好人:))
    • @Tayab 没问题。 ^_^ 谢谢!这将节省我的一天。
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 2011-03-16
    • 2017-02-14
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多