Свойство пользовательского элемента управления не отображается при доступе извне в WinForms - PullRequest
0 голосов
/ 18 октября 2018

Ситуация

  • У меня есть WinForm Form1 с двумя пользовательскими элементами управления (называемыми startControl и resultsControl)
  • Мой resultsControl имеет DataGridView с именем dataGridView1, который был добавлен конструктором
  • Мой startControl имеет DataTable с именем dt

Цель

  • Привязать DataTable от startControl к моему DataGridView в resultsControl

Я пытался выставить мою dataGridView1из resultsControl как собственность и доступ к ней DataSource в startControl, но по какой-то причине выставленное свойство мне не видно ни в Form1, ни startControl.

Code

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

    [PropertyTab("Data"), Description("Test"), Category("Misc"), Browsable(true)]
    public DataGridView dgvParameter
    {
        get
        {
            return this.dataGridView1;
        }
        set
        {
            this.dataGridView1 = value;
        }
    }
}

Я не могу получить доступ к своему dataGridView1 с помощью resultsControl.dgvParameter - что я делаю не так?

РЕДАКТИРОВАТЬ

Как указывалось, мне нужно работать с экземпляром resultsControl.Я уже создал экземпляр resultsControl в своем Form1 - это означает, что мне просто нужно получить к нему доступ из моего startControl пользовательского элемента управления, верно?

Моим первым предположением было бы выставить другое свойствов Form1 или есть другой способ доступа к нему из моей (родительской) формы?

Код

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

        private void btnDashStart_Click(object sender, EventArgs e)
        {
            startControl control = new startControl();
            ShowControl(control);
        }

        private void btnDashResults_Click(object sender, EventArgs e)
        {
            resultsControl control = new resultsControl();

            ShowControl(control);
        }

        public void ShowControl (Control control)
        {
            containerPanel.Controls.Clear();

            control.Dock = DockStyle.Fill;
            control.BringToFront();
            control.Focus();
            containerPanel.Controls.Add(control); 
        }
}

1 Ответ

0 голосов
/ 18 октября 2018

Вам необходимо использовать экземпляр из resultsControl, потому что ваше dgvParameter не является свойством static.

Перейдите в представление конструктора и щелкните свой элемент управления.В окне «Свойства» посмотрите на свойство «Имя».Это имя вашего экземпляра, например resultsControl1.Теперь вы можете использовать resultsControl1.dgvParameter в своем коде.

Кстати, вы должны придерживаться соглашений об именах, то есть свойства и классы должны именоваться с использованием UpperCamelCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...