C#如何在一个Form里查找另一个Form所保存的txt中的内容并显示在ListBox中
Form1输入了学生信息(包含学生学号)并保存在txt里如何在Form2中输入学生学号并查找到该学生的信息并显示在Form2的ListBox中?...
Form1输入了学生信息(包含学生学号)并保存在txt里
如何在Form2中输入学生学号并查找到该学生的信息并显示在Form2的ListBox中? 展开
如何在Form2中输入学生学号并查找到该学生的信息并显示在Form2的ListBox中? 展开
展开全部
你可以通过在要公开数据的 Form 类里定义一些公开的属性给其他的 Form 使用
当然如果要获取到数据,首先需要获取到这个 Form 的实例。可以通过 Application.OpenForms 属性获取所有已经打开的窗体,你可以通过使用反射来检测类型名是颤激哪否等于 Form1 来判断:
Form formObj = Application.OpenForms.Where((Form i) => String.Compare(i.GetType().ToString(), "Form1") == 0)[0]; // 因为可能只有一个查询结果,所以直接茄码用索引 0
然后你就可以通过使用 formObj 的公开属性来获取这些信息了。
而对于 Form1 类来说,也可以实现铅厅 INotifyPropertyChanging 或者 INotifyPropertyChanged 接口来实现对这些属性被修改的类内部处理:
public partical class Form1 : INotifyPropertyChanged
{
// 各种属性
// INotifyPropertyChanged 所定义的事件
public PropertyChangedEventHandler PropertyChanged;
// 一个属性
public String Content
{
get { return this._content; }
set
{
if(!String.IsNullOrWhiteSpace(value))
{
this._content = value;
this.PropertyChanged(new ProeprtyChangedEventArgs("Content"));
}
}
}
public Form1()
{
PropertyChanged += new PropertyChangedEventHandler(Property_OnChanged);
}
public void Property_OnChanged(Object sender, PropertyChangedEventArgs e)
{
switch(e.Property)
{
case "Content":
this.特定控件.Text = this._content;
break;
}
}
}
当然如果要获取到数据,首先需要获取到这个 Form 的实例。可以通过 Application.OpenForms 属性获取所有已经打开的窗体,你可以通过使用反射来检测类型名是颤激哪否等于 Form1 来判断:
Form formObj = Application.OpenForms.Where((Form i) => String.Compare(i.GetType().ToString(), "Form1") == 0)[0]; // 因为可能只有一个查询结果,所以直接茄码用索引 0
然后你就可以通过使用 formObj 的公开属性来获取这些信息了。
而对于 Form1 类来说,也可以实现铅厅 INotifyPropertyChanging 或者 INotifyPropertyChanged 接口来实现对这些属性被修改的类内部处理:
public partical class Form1 : INotifyPropertyChanged
{
// 各种属性
// INotifyPropertyChanged 所定义的事件
public PropertyChangedEventHandler PropertyChanged;
// 一个属性
public String Content
{
get { return this._content; }
set
{
if(!String.IsNullOrWhiteSpace(value))
{
this._content = value;
this.PropertyChanged(new ProeprtyChangedEventArgs("Content"));
}
}
}
public Form1()
{
PropertyChanged += new PropertyChangedEventHandler(Property_OnChanged);
}
public void Property_OnChanged(Object sender, PropertyChangedEventArgs e)
{
switch(e.Property)
{
case "Content":
this.特定控件.Text = this._content;
break;
}
}
}
展开全部
你好,你是把信息谨碧保存在txt文件中了祥仿举吗?如果这样可以直接读文件。
不过我认为你的意思应该是在Form2中获得Form1的输入内容吧两种方法:
一:这样你可以在Form1中再定义属性,把输入的内容赋大磨值给它,然后在Form2中传递Form1的引用,然后就能用Form1的数据了。
二:也可以在设计cs文件中把控件改为public类型。
不过我认为你的意思应该是在Form2中获得Form1的输入内容吧两种方法:
一:这样你可以在Form1中再定义属性,把输入的内容赋大磨值给它,然后在Form2中传递Form1的引用,然后就能用Form1的数据了。
二:也可以在设计cs文件中把控件改为public类型。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这里告雹说的保存在Txt不是很明确额,如果是保存在TXT文件中,同楼上的,直接读文件就可以了,如果是保存在Form1的Txt变量中,那么直接将这个变量传递过来就可以简颂了,你袜咐帆可以给Form2添加一个带参数的构造函数,比如public Form2(string txt){处理txt;查找,显示到listbox;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询