使用C#在Windows中将值从一个用户控件转移到Windows中的另一个用户控件

时间:2019-01-05 08:23:14

标签: c# winforms user-controls

我正在开发会计软件。这是我的学校项目。有一个主要形式Form1和三个用户控件,例如uc1,uc2,uc3。 1. uc1中有一个标签 2. uc2有一个按钮 3. uc3有一个文本框和一个按钮

我想将uc3文本框的值发送到uc1的标签

我为此编写了以下代码

............ uc1代码..............

  public String MyText
{
     set
     {
        this.label1.Text = value;
     }
}
}

....... uc3代码............

public event EventHandler MyEvent;

public String MyText
{
     get
     {
          return this.TextBox1.Text;
     }
}

private void button1_click(  ...   )
{
     if(MyEvent != null)
     {
          MyEvent(null, null);   
     }
}

......... uc2代码...........

button_Click( .... )
{
    uc3.BringToFront();
}

............ Form1代码............

void MainWindow_myevent(Object sender, EventArgs e)
{
    this.uc1.MyText = this.uc3.MyText;
}

public Form1()

    {
          this.uc3.MyEvent += MainWindow_myevent;    
    }

我在Form1上创建了两个面板pan1和pan2 当表单加载时,我的pan1将显示uc2,而当单击uc2上的按钮时,它将显示uc3。 如pan2在表单加载时将显示uc1。

现在我的问题是, 如果我在Form1加载时调用uc1和uc3,则此代码有效,但在Form1加载时调用uc1和uc2,然后通过单击uc2上的按钮调用uc3,则此代码没有给我想要的结果。请告诉我我错了。

1 个答案:

答案 0 :(得分:0)

您可以直接在后面的表单代码中分配属性。

代码与下面的类似-

public Filter getFilter() {
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {
                String charString = charSequence.toString();
                if (charString.isEmpty()||charString.equals("")||charString.equals(" ")) {
                    listpensiunFiltered = listpensiun;
                } else {
                    List<PensiunModel> filteredList = new ArrayList<>();
                    for (PensiunModel row : listpensiun ) {

                        // name match condition. this might differ depending on your requirement
                        // here we are looking for name or phone number match
                        if (row.getNamaKtp().toLowerCase().contains(charString.toLowerCase()) || row.getNopen2().contains(charSequence)) {
                            filteredList.add(row);
                        }
                    }

                    listpensiunFiltered = filteredList;
                }

                FilterResults filterResults = new FilterResults();
                filterResults.values = listpensiunFiltered;
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
                listpensiunFiltered = (ArrayList<PensiunModel>) filterResults.values;
                notifyDataSetChanged();
            }
        };
    }