C#子窗体刷新父窗体

cui850777 2008-03-24 04:31:01
我在子窗体中实现添加了父窗体的treeview中树的新值,现在我想就是在子窗体关闭的时候自动刷新父窗体的treeview,让他的显示中增加了我刚才添加的内容
请问该如何编写?(用c#语言)
...全文
6365 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
luo91820 2010-11-29
  • 打赏
  • 举报
回复
使用委托,
    
public static class UserInfo
{
public static List<Users> UserList = new List<Users>();
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace TestDelegationApplication
{
public partial class UserManagerForm : Form
{
public UserManagerForm()
{
InitializeComponent();
}

private void btnExitApplication_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void btnAddUser_Click(object sender, EventArgs e)
{
AddOrEditForm AddOrEdit = new AddOrEditForm();
AddOrEdit.OperationType = 0;
AddOrEdit.RefreshUserList = this.RefreshList;
AddOrEdit.ShowDialog();
}

public void RefreshList()
{
listUserManager.Items.Clear();
for (int i = 0; i < UserInfo.UserList.Count; i++)
{
ListViewItem listItem = new ListViewItem(new string[] { UserInfo.UserList[i].Guid, UserInfo.UserList[i].UserName, UserInfo.UserList[i].Sex, UserInfo.UserList[i].Age, UserInfo.UserList[i].CreateDate });
listUserManager.Items.Add(listItem);
}
}
}
}


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TestDelegationApplication
{
public partial class AddOrEditForm : Form
{
public AddOrEditForm()
{
InitializeComponent();
}

public int OperationType; //操作类别、

/// <summary>
/// 添加用户委托
/// </summary>
public delegate void DoAction();
public DoAction RefreshUserList;

private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}

public void BindAge()
{
for (int i = 1; i <= 100; i++)
{
cboAge.Items.Add(i);
}
}

private void AddOrEditForm_Load(object sender, EventArgs e)
{
BindAge();
BindText();
}

void BindText()
{
if (OperationType == 0)
{
this.Text = "添加用户";
this.grpAddOrEdit.Text = "添加用户";
this.btnAddOrEdit.Text = "添加用户";
}
}

private void btnAddOrEdit_Click(object sender, EventArgs e)
{
string btnText=btnAddOrEdit.Text;
switch (btnText)
{
case "添加用户":
Users u = new Users();
u.Guid = System.Guid.NewGuid().ToString();
u.UserName = txtUserName.Text;
u.Sex = cboSex.Text;
u.Age = cboAge.Text;
u.CreateDate = DateTime.Now.ToString();
UserInfo.UserList.Add(u);
RefreshUserList();
break;
default:
break;
}
}
}
}

zk011 2008-03-25
  • 打赏
  • 举报
回复
在主窗体中定义刷新事件,当子窗体关闭时引发事件即可
doublefeng 2008-03-25
  • 打赏
  • 举报
回复
找到一块以前写的代码..希望对你有所帮助

主窗体

Form2 frm = new Form2();
frm.ShowDialog(this);


子窗体

((Form1)this.Owner).TextBox1.Text = "这将显视在主窗体";
doublefeng 2008-03-25
  • 打赏
  • 举报
回复
这里的两个窗体 当然是指同一个类 不是子窗体.是子窗体中的父窗体类.

就是父窗体在构造子窗体时.把this传给他.

doublefeng 2008-03-25
  • 打赏
  • 举报
回复

只要让两个窗体都指向同一个实例..

不管哪边刷新. 都会改变实例
youngerch 2008-03-25
  • 打赏
  • 举报
回复
Up
lifengit 2008-03-25
  • 打赏
  • 举报
回复


父窗体
FrmXiangQing XQ = new FrmXiangQing();
XQ.Owner = this;

子窗体中
this.Owner="";

paulmake 2008-03-25
  • 打赏
  • 举报
回复
尽量别用静态变量。。。
可以用属性,在子窗体中定义一个类型为treeview的属性,在父窗体实例子窗体时将父窗体中的treeview1传过去。
或者在子窗体中定义一个类型为父窗体类的属性,在父窗体实例子窗体时将父窗体自己传过去,也就时xx=this;。
reborter 2008-03-25
  • 打赏
  • 举报
回复
mark
xiaoliangwh 2008-03-24
  • 打赏
  • 举报
回复
up
c863123 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 cui850777 的回复:]
我一直在想 refresh是不是没起到作用?
[/Quote]
你的添加信息要刷新refresh是没用的,如果信息进数据库,必须在子窗体关闭的时候,把数据冲数据库中取出。
这样才会刷新的。
g012345678 2008-03-24
  • 打赏
  • 举报
回复
N年没有做网站了,所以忘记了
光义 2008-03-24
  • 打赏
  • 举报
回复



reflash()方法好像是 JAVA的..刷新...

...嘿嘿..
光义 2008-03-24
  • 打赏
  • 举报
回复


C# 是这样 reflash窗体的嘛??? 不是还有另一个关键字吗???


好像是重画界面的什么... I 开头的..其他的忘记了...
水如烟 2008-03-24
  • 打赏
  • 举报
回复
C#不会用

大意是
tv = ctype(child.mdiParent,MainForm).Treeview1
newredhat 2008-03-24
  • 打赏
  • 举报
回复
oo
cui850777 2008-03-24
  • 打赏
  • 举报
回复
我一直在想 refresh是不是没起到作用?
dancingbit 2008-03-24
  • 打赏
  • 举报
回复
子窗体中如何操纵父窗体中的TreeView?
cui850777 2008-03-24
  • 打赏
  • 举报
回复
我用了断电测试 确实用到了 treeview1.Refresh() 不过就是没反应
dancingbit 2008-03-24
  • 打赏
  • 举报
回复
你确定子窗体中的数据传递到了父窗体?
加载更多回复(18)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧