我正在开发会计软件。这是我的学校项目。有一个主要形式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,则此代码没有给我想要的结果。请告诉我我错了。
答案 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();
}
};
}