苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 80701|回复: 50
打印 上一主题 下一主题

[Winform] form2窗体修改form1窗体内容问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-21 13:04:55 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
form2窗体修改form1窗体内容问题
这个问题已经有很多人问了,今天我做个例子出来大家看看吧
我们分别建两个窗体
from1

form2

下面咱们一起来看看from1的代码吧
[C#] 纯文本查看 复制代码
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 from2toform1
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.f1 = this;//把当前的Form1给form2中的form1对象
            f2.Show();

        }
        /// <summary>
        /// 添加名称
        /// </summary>
        /// <param name="name">名称</param>
        public void addname(string name)
        {
            richTextBox1.Text += name + "\r\n";
        }
    }
}

再来看看form2的代码
[C#] 纯文本查看 复制代码
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 from2toform1
{
    public partial class Form2 : Form
    {
        public Form1 f1 = new Form1();
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            f1.addname(textBox1.Text.Trim());
        }
    }
}

其实这个呢很简单,只是一个思路问题,我们在调用Form2的时候不能再重new form1要不然就不是一个对象了,所以值会不管用,像我这样就可以了,看看效果

我们单击一下添加名称看看如下效果
是不是添加进来了,而且是时时的效果。

好了这个问题就说到这里吧,下面我把代码放上来大家可以直接下载测试
from2toform1.rar (38.39 KB, 下载次数: 503)
如果不能下载那是因为你还没有注册会员哦



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
 楼主| 发表于 2013-1-11 09:52:54 | 显示全部楼层
印醒 发表于 2013-1-11 09:26
谢谢苏老大的分享,在form1中使用form2 , 在form2中又使用form1,妙!学习了

这个其实很简单,只是想法的问题,关键在想法,呵呵
板凳
 楼主| 发表于 2013-3-8 14:38:05 | 显示全部楼层
youzi 发表于 2013-3-8 14:22
看了 你的想法改了我之前的部分功能,问题是老是出现新的窗口,跟之前的写的窗体间传参一样,图片窗口值需要 ...

没明白你的意思,我这个例子只是告诉大家两个窗体之前怎么样传值,和你说的在什么情况下显示没有关系吧。
地板
 楼主| 发表于 2013-3-8 14:55:26 | 显示全部楼层
youzi 发表于 2013-3-8 14:48
我就想追问如何只打开一个窗体,而窗体内容随着另一个窗体的操作而改变,不是又打开一个窗体。我点击一次小 ...

你这个不就是一个图片 放大功能吗?
在A窗体单击小图片,想在出现的B窗体里显示大图对吗?
你这样,在单击A窗体小图片时把大图片的地址付到B窗体然后显示就行了。

5
 楼主| 发表于 2013-3-8 15:09:37 | 显示全部楼层
youzi 发表于 2013-3-8 15:01
我理解你说的意思,不然我那个放大也显示不出来。我意思是说小图片是一组几十张不等,我先看下一张的大图 ...

简单,只打开一个,每次替换一下,每次单击把上次的图片覆盖一下,这样就只显示一个了,
也就是说只有在第一次时新建一个窗体,以后就是覆盖图片了
6
 楼主| 发表于 2013-3-8 15:19:03 | 显示全部楼层
youzi 发表于 2013-3-8 15:13
恩,了解的,我就是思路短路了,你说的我想到了也尝试了(还尝试了B的释放否然后再打开),就是没实现,之前 ...

窗体只有在调用Show()方法后才会显示,你可以先New一个Public类型的,当显示的时候先传值再Show就行了,如果不想显示就隐藏
7
 楼主| 发表于 2013-3-8 15:29:14 | 显示全部楼层
youzi 发表于 2013-3-8 15:22
好的,这个到可以一试,thanks

别忘记成功之后把代码给大家分享下,到时候另起一个帖子吧,这个有点不对路了
8
 楼主| 发表于 2013-3-8 18:23:45 | 显示全部楼层
逆尘 发表于 2013-3-8 17:54
需要那么麻烦么,通过值传递,修改对应控件的可见级别然后就是直接赋值就可以了啊

是吗?那你给能个例子,或者部分代码让我们见识见识,楼上的可能是没有理解要做什么吧,我们做的是两个窗体之间的传值(就是已生成的两个对象之间的传值),而不是像你说的  控件的可见级别那样的问题,那是同一个对象下的情况可以,如果是不同对象是不可以的,这是违反C#规范的,同一个对象下的两个类传值,与不同对象之间的传值是不一样的,或者是说楼主真有高招?期待你的代码
9
 楼主| 发表于 2013-3-19 11:53:11 | 显示全部楼层
youzi 发表于 2013-3-19 11:41
补充下。当把一个窗体付给另一个窗体的时候,一下成员Modifiers 属性默认的是private 要改为public  就可以 ...

它们本身就是一个类,你说的这些方法肯定是可以的,只是现在的问题是要同步,就是说要有同步效果,所以这些基本上是可以无视的,设置不设置没有什么意义。
10
 楼主| 发表于 2013-4-6 15:26:34 | 显示全部楼层
xhdyhzw 发表于 2013-4-6 10:04
那苏飞老大
我在窗口2调用窗口1的某段子程序呢?不是调用它的控件操作!

方法是一样的,最关键的是看我的对象是怎么传的,只要把对象传过去了,你想调用方法还是属性还不是看你怎么选择的问题,
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2025-5-1 09:26

© 2014-2021

快速回复 返回顶部 返回列表