高分悬赏求大神们帮忙

Zanvimocvy 2013-09-25 12:00:09
求大神帮忙。要解决的问题如下:
有两个窗体,主窗体Form1,子窗体Form2。Form1中有个TextBox1,Button1,子窗体Form2中有Button2,
假如我点击Button1,弹出Form2,然后我点击Button2后,程序会读取Bin里面的一个log.text文件内容,我想然后将读取的内容显示在Form1中的TextBox1中。也就是跨窗体显示。现在假如读取内容在Form2中显示,我可以做到,但怎么在Form1上显示呢?这个是截图就是这样的效果
...全文
487 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
deovolente502 2013-10-30
  • 打赏
  • 举报
回复
引用 33 楼 goodhtml 的回复:
引用 27 楼 deovolente502 的回复:
[quote=引用 12 楼 goodhtml 的回复:] [quote=引用 8 楼 c02645 的回复:] ((Form1)this.Parent).TextBox1.Text = "你要的log内容文字";
不行啊程序都直接报错了。
上面的帖子不是我发的,但可以修改成功运行,步骤如下: 1)Form1.Designer.cs中将 TextBox1 字段设为public; 2)上句代码修改为:((Form1)this.ParentForm).TextBox1.Text = "你要的log内容文字"; [/quote]不行吧,你获取的TextBox1其实是Form2的![/quote] 亲测,你确认一下再否定也不迟么。呵呵 这个确实也可以实现,但不建议使用。我只是解决了一下报错的问题。
Zanvimocvy 2013-09-27
  • 打赏
  • 举报
回复
引用 36 楼 happy09li 的回复:
引用 34 楼 goodhtml 的回复:
[quote=引用 30 楼 happy09li 的回复:] 用事件和委托很好实现
这点小事还劳烦版主亲自出马。
今天才刚申请的版主,不是你回帖我还不知道呢 [/quote]
Zanvimocvy 2013-09-27
  • 打赏
  • 举报
回复
熙风 2013-09-27
  • 打赏
  • 举报
回复
引用 34 楼 goodhtml 的回复:
引用 30 楼 happy09li 的回复:
用事件和委托很好实现
这点小事还劳烦版主亲自出马。
今天才刚申请的版主,不是你回帖我还不知道呢
Zanvimocvy 2013-09-27
  • 打赏
  • 举报
回复
((Form1)this.Owner).TextBox1.Text = "你要的log内容文字"; 感谢26楼kllxyu ,这样就行了,
Zanvimocvy 2013-09-27
  • 打赏
  • 举报
回复
引用 30 楼 happy09li 的回复:
用事件和委托很好实现
这点小事还劳烦版主亲自出马。
Zanvimocvy 2013-09-27
  • 打赏
  • 举报
回复
引用 27 楼 deovolente502 的回复:
引用 12 楼 goodhtml 的回复:
[quote=引用 8 楼 c02645 的回复:] ((Form1)this.Parent).TextBox1.Text = "你要的log内容文字";
不行啊程序都直接报错了。
上面的帖子不是我发的,但可以修改成功运行,步骤如下: 1)Form1.Designer.cs中将 TextBox1 字段设为public; 2)上句代码修改为:((Form1)this.ParentForm).TextBox1.Text = "你要的log内容文字"; [/quote]不行吧,你获取的TextBox1其实是Form2的!
deovolente502 2013-09-26
  • 打赏
  • 举报
回复
引用 12 楼 goodhtml 的回复:
引用 8 楼 c02645 的回复:
((Form1)this.Parent).TextBox1.Text = "你要的log内容文字";
不行啊程序都直接报错了。
上面的帖子不是我发的,但可以修改成功运行,步骤如下: 1)Form1.Designer.cs中将 TextBox1 字段设为public; 2)上句代码修改为:((Form1)this.ParentForm).TextBox1.Text = "你要的log内容文字";
OSMeteor 2013-09-26
  • 打赏
  • 举报
回复
http://blog.csdn.net/kllxyu/article/details/10591981 参考下这个
Teln_小凯 2013-09-26
  • 打赏
  • 举报
回复
学习了
E次奥 2013-09-26
  • 打赏
  • 举报
回复
引用 23 楼 goodhtml 的回复:
引用 22 楼 porenasckx 的回复:
[quote=引用 21 楼 goodhtml 的回复:] [quote=引用 19 楼 vb763305825 的回复:] 虚拟是什么意思?
可能是我用词不当吧,启动程序后,窗体就有一个textbox了。
难道你想单机按钮的时候在显示TextBox?那也太奇葩了吧!直接显示才好![/quote]看图你就明白了[/quote] 后边那幅图是两个TextBox嵌套着吗?
CqCoder 2013-09-26
  • 打赏
  • 举报
回复
目测是委托事件问题
csdn_风中雪狼 2013-09-26
  • 打赏
  • 举报
回复
窗体间传值用委托好了
熙风 2013-09-26
  • 打赏
  • 举报
回复
用事件和委托很好实现
亲爱的大狗 2013-09-25
  • 打赏
  • 举报
回复
在Form1里定义一个public的指针,指向Form1本身这个窗体。在Form1里写一个修改textbox1的方法Textbox_Change() 在Form2的按钮被点击的时候,调用这个指针,就可以访问Form1里的方法Textbox_Change()了。 我自己平时都是这么实现的,也不知道是否恰当,借楼同学习~
dianjixue1 2013-09-25
  • 打赏
  • 举报
回复
方法很多啊,可以在Form2中以各种方式找到Form1窗体的TextBox1控件后赋Text值。 这里说一下 委托。 在Form2中定义

public delegate void ParentShowText(string txtText);//声明一个委托
public ParentShowText ShowText;//声明事件
其中ParentShowText是委托名,后面是参数,委托名可以随便起,参数可以随便定,调用的时候对应起来就可以了。 在Form1中打开Form2时

private void Button1_Click(object sender, EventArgs e)
{
   Form2 f2 = new Form2();
   f2.ShowText += new Form2.ParentShowText(ShowText_Method);
   f2.Show();
}
Form1不一定是Form2的主窗体 然后在Form1中写一个实现的公共的事件

public void ShowText_Method(string txtText)//参数与Form2中的委托对应起来
  {
      //根据Form2中的传参,实际是在Form1中操纵细节
      TextBox1.Text = txtText;
 }
在Form2中的Button的点击事件

private void Button2_Click(object sender, EventArgs e)
{
     string logs = "";//从txt文件中读取
     ShowText(logs);
}
好了,大功告成!
智商余额不足 2013-09-25
  • 打赏
  • 举报
回复

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowLog += new EventHandler<LogEventArgs>(f2_ShowLog);
            f2.Show();
        }
        void f2_ShowLog(object sender, LogEventArgs e)
        {
            textBox1.Text = e.Text;
        }
    }
}

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            OnShowLog(new LogEventArgs("log log log log log"));
        }
        private void OnShowLog(LogEventArgs e)
        {
            if (ShowLog != null) ShowLog(this, e);
        }
        public event EventHandler<LogEventArgs> ShowLog;
    }
    public class LogEventArgs : EventArgs
    {
        public string Text { get; private set; }
        public LogEventArgs(string log)
        {
            Text = log;
        }
    }
}
likofans 2013-09-25
  • 打赏
  • 举报
回复
Zanvimocvy 2013-09-25
  • 打赏
  • 举报
回复
有人说要用windowns消息,看了半天没看明白。也没试出来效果,就放弃了。要是各位能贴个代码最好了。
Zanvimocvy 2013-09-25
  • 打赏
  • 举报
回复
引用 22 楼 porenasckx 的回复:
引用 21 楼 goodhtml 的回复:
[quote=引用 19 楼 vb763305825 的回复:] 虚拟是什么意思?
可能是我用词不当吧,启动程序后,窗体就有一个textbox了。
难道你想单机按钮的时候在显示TextBox?那也太奇葩了吧!直接显示才好![/quote]看图你就明白了
加载更多回复(17)

110,538

社区成员

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

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

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