Невозможно изменить значение комбинированного списка в пользовательском элементе управления из другой формы. - PullRequest
0 голосов
/ 17 марта 2020

У меня есть пользовательский элемент управления в Autocad, который создает чертежи на основе определенных критериев. Из этого пользовательского элемента управления может быть открыта другая форма, которая используется для заполнения указанных c данных. Когда я пытаюсь автоматически изменить Combobox в пользовательском элементе управления с данными из формы, он выдает ошибку:

Ссылка на элемент без общего доступа требует ссылки на объект.

Теперь я посмотрел это на inte rnet, но я не могу применить указанные решения. Моя ситуация выглядит следующим образом:

Partial Public Class Partial Public Class User_Control
    Private Form1 As New Form_Something
  private sub button1_click(sender As Object, e As EventArgs) Handles button1.Click
    Form1.show()
  End sub
End Class

Этот пользовательский элемент управления имеет Combobox, назовем его Combobox1. Теперь, когда я изменяю значение в Form_Something, Combobox1 также должен измениться. Итак, у меня есть следующий код в Form1:

Partial public class Form_Something
    Public Sub Button1_Click(sender As Object, e As EventArgs) Handles BT_Apply.Click
       User_Control.Combobox1.text = "Apples"
    End sub
End class

Это дает упомянутую ошибку. Может кто-нибудь, пожалуйста, помогите мне решить эту проблему, потому что я хотел бы сделать это с несколькими выпадающими списками / ярлыками и т. Д. c.

1 Ответ

0 голосов
/ 18 марта 2020

Чтобы показать вам более интуитивно, я изменил BorderStyle на UserControl1 здесь. Вы можете изменить или прокомментировать его при необходимости.

Я прокомментировал некоторые ключевые части кода, пожалуйста, дайте мне знать, если вы все еще в замешательстве.

Если мое сообщение поможет решить вашу проблему, нажмите «Пометить как ответ» этого сообщения. Помечая сообщение как отвеченное или полезное, вы помогаете другим быстрее находить ответ.

Результаты выглядят следующим образом: enter image description here

Мой код выглядит следующим образом:

1. Form1 код:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs)
        MyUserControl.ComboBox1.Text = "Apples"
    End Sub
End Class

2. UserControl1 код:

Public Class UserControl1

    Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ComboBox1.Text = "Apple"
        Me.BorderStyle = BorderStyle.Fixed3D
    End Sub

    Dim myForm As Form
    Dim btn As Button
    Dim txtbox As TextBox

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        myForm = New Form With {.Text = "myForm"}
        btn = New Button With {.Text = "Save", .Height = 30, .Width = 60, .Top = 100, .Left = 150}
        txtbox = New TextBox With {.Text = "", .Height = 20, .Width = 100, .Top = 100, .Left = 20}

        myForm.Controls.Add(btn)
        myForm.Controls.Add(txtbox)

        myForm.Show() 'Open dialog in modeless window

        AddHandler btn.Click, AddressOf Btn_Click
    End Sub

    Sub Btn_Click(sender As System.Object, e As System.EventArgs)
        Me.ComboBox1.Text = txtbox.Text 'This step is important!
        myForm.Close()
    End Sub

End Class
...