【问题标题】:c# get the value of button clicked from user controlc# 获取用户控件点击按钮的值
【发布时间】:2016-03-13 05:15:47
【问题描述】:

我有用户控制并将其命名为ucMilkshake,我的主窗体Form1 每个都有一组按钮。我将项目按钮放在ucMilkshake 上,将数量(1,2,3,4,5,6,7,8,9)按钮放在Form1 上,用户需要先单击btnMilkshake,然后ucMilkshake 会弹出在panelForm1 中,他们将在他们选择需要的项目之一后看到项目列表选择项目的数量,然后它将显示到listview in Form1

但我无法获得在用户控件中单击的按钮的值,希望这里有人可以使用 if statement 帮助解决我的问题,因为我有一组按钮

这是我的代码:

用户控制

public partial class ucMilkshake : UserControl
{
    int clickcount = 0;
    private static ucMilkshake _instance;

    public static ucMilkshake Instance
    {
        get
        {
            if (_instance == null)
                _instance = new ucMilkshake();
            return _instance;
        }
    }

    public ucMilkshake()
    {
        InitializeComponent();
    }

    public string MS1
    {
        get
        {
            return button11.Text;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        clickcount - 1;
    }

   private void button2_Click(object sender, EventArgs e)
    {
        clickcount = 2;
    }
}`

表格1

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }


    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void btnMilkshake_Click(object sender, EventArgs e)
    {
        if (!mainPanel.Controls.Contains(ucMilkshake.Instance))
        {
            mainPanel.Controls.Add(ucMilkshake.Instance);
            ucMilkshake.Instance.Dock = DockStyle.Fill;
            ucMilkshake.Instance.BringToFront();
        }
        else
            ucMilkshake.Instance.BringToFront();
    }

    private void quantityOne_Click(Object sender, EventArgs e)
    {
        //here i want to use if statement to get the value of clicked button in user control

    private void quantityTwo_Click(Object sender, EventArgs e)
  }

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

    不要在UserControl 中使用成员变量。相反,创建一个可以在Form 中访问的公共属性。

    public partial class ucMilkshake : UserControl
    {
        private static ucMilkshake _instance;
    
        public int ClickCount { get; private set; }
    
        public static ucMilkshake Instance
        {
            get
            {
                if (_instance == null)
                    _instance = new ucMilkshake();
                return _instance;
            }
        }
    
        public ucMilkshake()
        {
            InitializeComponent();
        }
    
        public string MS1
        {
            get
            {
                return button11.Text;
            }
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            ClickCount -= 1;
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
            ClickCount = 2;
        }
    }
    

    然后在表单的单击事件处理程序中,您可以像这样访问该值:

    private void quantityOne_Click(Object sender, EventArgs e)
    {
        var count = ucMilkshake.Instance.ClickCount;
    }
    

    【讨论】:

    • 最后一个忙,您可以添加如何将其显示到列表视图
    • 如果我的回复解决了您的问题,请将其标记为“已回答”。由于此问题仅针对“c# get the value of button clicked from user control”,因此您应该提出一个与您的“新”问题相关的单独问题。
    • 我看不到输出对不起我只是一个编程新手仍在尝试如何显示你对 listview 的答案
    • 顺便说一句,我也说过要在我的帖子中显示它以列表查看它
    • 我在您的代码中看不到任何列表视图。你试过什么了?您需要先创建一个列表视图,然后才能在其中显示数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多