精华内容
下载资源
问答
  •  但是想想,那么多人都对,应该是我了。后来发现原因是:  调用页面的方法是 Window.parent.A(),因为一直没有提示A方法,所以就觉得可能是的,后来证明,不提示的不一定就不行。错误的原因是因为A方法不...

      这是我昨天在项目中遇到的一个问题,百度之后网上有很多解决的方法,一模不两样的,于是我就试了N次都没成功,心里骂娘千百遍,心想,你们到底是用什么做出来的,骗纸!

      但是想想,那么多人都说对,应该是我错了。后来发现原因是:

      调用父页面的方法是 Window.parent.A(),因为一直没有提示A方法,所以就觉得可能是错的,后来证明,不提示的不一定就不行。错误的原因是因为A方法不能写在.js文件中,因为方法A是操作相应的Easyui,所以可能是这里的问题,写在父页面里就可以了。

      这是我第一次发博客,我是新手,就是记录一下遇到过的问题,希望能提醒和我遇到同样问题的新手。

      PS:在后来的项目中才知道当时的结论是错的,父页面的方法一定不要写在页面加载完成后执行中

    展开全文
  • ” 没,无可否认很多人肯定都知道了。然而最近突然人问我,他在网上查找了半天不是没有找到合适的文章就是找到的文章不是很清楚。于是我想就此问题的解决发表到我的博客中,让更多的人能够清楚实现方法。 ...
        看到这个题目相信有很多人都会说:“这个还用说,早会了!”
          没错,无可否认有很多人肯定都知道了。然而最近突然有人问我,说他在网上查找了半天不是没有找到合适的文章就是找到的文章不是很清楚。于是我想就此问题的解决发表到我的博客中,让更多的人能够清楚实现方法。
          因为主要是窗体回调问题,所以就不过多阐述了,给出详细的代码应该就可以理解了。

          我们这里假设已经存在了两个窗体分别为:FormFather(父窗体)和FormChild(子窗体),而父窗体中有一个名为Btn_OpenChild的按钮,用来打开子窗体,子窗体中也有个名为Btn_IsTrue按钮和一个TextBox控件。当TextBox控件中输入“True”时,父窗体的Btn_OpenChild可用,并关闭子窗体,当输入其它任何字符或字符串父窗体的Btn_OpenChild都不可用而不关闭子窗体,当然刚启动程序时的父窗体的Btn_OpenChild按钮是可用的。下面是实现的代码:
     1//下面是主窗体的代码
     2using System;
     3using System.Collections.Generic;
     4using System.ComponentModel;
     5using System.Data;
     6using System.Drawing;
     7using System.Text;
     8using System.Windows.Forms;
     9
    10namespace MDIFormDemo
    11{
    12    public partial class FormFather : Form
    13    {
    14        public FormFather()
    15        {
    16            InitializeComponent();
    17        }

    18
    19        private void OpenChild()//在MDI父窗体中显示子窗体
    20        {
    21            foreach (Form f in this.MdiChildren)
    22            {
    23                if ((f) is FormChild)
    24                {
    25                    f.Activate();
    26                    return;
    27                }

    28            }

    29            FormChild frm = new FormChild(this);
    30            frm.MdiParent = this;
    31            frm.Show();
    32        }

    33
    34        private void FormFather_Load(object sender, EventArgs e)
    35        {
    36            OpenChild();//父窗体被打开时,子窗体也同时被打开
    37        }

    38        private void Btn_OpenChild_Click(object sender, EventArgs e)
    39        {
    40            OpenChild();//如果Btn_OpenChild可用,则点击此按钮也能打开子窗体
    41        }

    42}
    主窗体中没有什么特别的,只是注意第29行的代码中的“this”,接合子窗体的代码你就能明白为何要加上这个“this”了(平时只为了打开子窗体时,我们都不会需要在括号中输入“this”)。
    //下面是子窗体的代码 
    1
    using System;
     2using System.Collections.Generic;
     3using System.ComponentModel;
     4using System.Data;
     5using System.Drawing;
     6using System.Text;
     7using System.Windows.Forms;
     8
     9namespace MDIFormDemo
    10{
    11    public partial class FormChild : Form
    12    {
    13        private FormFather MyForm;
    14        public FormChild (FormFather f)
    15        {
    16            InitializeComponent();
    17            MyForm = f;
    18        }

    19
    20        private void FormChild_Load(object sender, EventArgs e)
    21        {
    22
    23        }

    24
    25        private void Btn_IsTrue_Click(object sender, EventArgs e)
    26        {
    27             if (this.textBox1.text == "True")
    28             {
    29                   MyForm.Btn_OpenChild.Enabled = true;
    30                  this.Close();
    31             }

    32             else
    33             {
    34                  MyForm.Btn_OpenChild.Enabled = false;
    35             }

    36        }

    37}
    主窗体的按钮能用暂且不说,你先在子窗体的TextBox控件中输入一个非“True”的字符或字符串,此时你看看主窗体的Btn_OpenChild是否变成灰色的不可用的状态了呢?

    以上代码运行环境为VS.NET2005,本人在此下面运行通过,你不妨建立一个MDIFormDemo工程试验一下。



    本文转自刚刚博客园博客,原文链接:http://www.cnblogs.com/lijigang/archive/2007/01/14/619878.html,如需转载请自行联系原作者

    展开全文
  • 比如,你希望背景图上面个人像,人像上面,个按钮,那就应该在Canvas上这样放: Canvas(节点) (以下都是节点) 背景图 人像 按钮 如果没有把按钮放在最下层,可能就会被人像或者背

    Unity学习笔记:UI预制体制作心得(按钮文本框看得见但是点不动?也许是层级关系搞错了~)

    仅代表个人学习经验,仅供参考,欢迎各位码友批评指正。

    UI从上到下依次渲染,最先渲染的在最底层。如果UI有很多层次(背景图上又加图,图上又加文本框加按钮的……)把越需要在UI界面最上层的控件放在画布子节点的越下面。

    比如说,你希望背景图上面有个人像,人像上面,有个按钮,那就应该在Canvas上这样放:
    Canvas(父节点)
    (以下都是子节点)
    背景图
    人像
    按钮

    如果没有把按钮放在最下层,可能就会被人像或者背景图遮挡,导致渲染之后按钮看得见但是点不动的现象。

    另外,所有的UI都是基于Canvas之上才可见,如果没有把UI设置为场景内Canvas的子节点的话,UI是看不见的。

    以及,预制体内部不需要Canvas,Unity会在查看预制体内部时自动生成一张显示UI的画布。

    展开全文
  • 如果在子类中定义某方法与其相同的名称和参数,我们该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...
  • 写这边文章的初衷是因为经常人看到viewGroup的onInterceptTouchEvent返回true,view调用requestDisallowInterceptTouchEvent(true)为什么还能实现view可以捕获点击事件(其实这个问题一开始是了),...

    1.引言

    写这边文章的初衷是因为经常有人看到说,父viewGroup的onInterceptTouchEvent返回true,子view调用requestDisallowInterceptTouchEvent(true)为什么还能实现子view可以捕获点击事件(其实这个问题一开始是错了),另外有人问用requestDisallowInterceptTouchEvent(true)到底应该在什么时候调用,是在子view的dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent哪个方法,又应该在MotionEvent的Down,Up,Move的什么时候调用呢?其实这些问题根本还是对手势冲突有一点了解,但是又没理解透彻导致的,所以就有了这篇文章,希望有一定的启示作用。

    2.Q1:父viewGroup的onInterceptTouchEvent返回true,子view调用requestDisallowInterceptTouchEvent(true)为什么还能实现子view可以捕获点击事件?

    答:这个问题一开始就是错的,当我们的父ViewGroup不管在MotionEvent的哪种状态都返回true的话,子view是直接拿不到任何事件了,也就是说子view的dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent都不会执行。为什么这样呢?看下代码ViewGroup的dispatchTouchEvent方法:

                if (actionMasked == MotionEvent.ACTION_DOWN) {
                    // Throw away all previous state when starting a new touch gesture.
                    // The framework may have dropped the up or cancel event for the previous gesture
                    // due to an app switch, ANR, or some other state change.
                    cancelAndClearTouchTargets(ev);
                    resetTouchState();//1
                }
    
                // Check for interception.
                final boolean intercepted;
                if (actionMasked == MotionEvent.ACTION_DOWN
                        || mFirstTouchTarget != null) {
                    final boolean disallowIntercept = (mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0;
                    if (!disallowIntercept) {//2
                        intercepted = onInterceptTouchEvent(ev);
                        ev.setAction(action); // restore action in case it was changed
                    } else {
                        intercepted = false;
                    }
                } 
                ....
                
                 if (!canceled && !intercepted) {//3
                 }
    复制代码

    注释1:当ViewGroup拿到点击Down事件的时候,会重置mGroupFlags的值mGroupFlags &= ~FLAG_DISALLOW_INTERCEPT,当执行boolean disallowIntercept = (mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0;mGroupFlags & ~FLAG_DISALLOW_INTERCEPT& FLAG_DISALLOW_INTERCEPT很明显这个值就是为0,所以disallowIntercept为false,必然会进if的判断。 注释2:Intercepted的值被赋予了onInterceptTouchEvent(ev)的返回值,如果都是为true的话,那么注释3的if判断始终都进不去了,那么子view的一切点击事件都被拦截了。

    2.Q2:按照上面的所说的,是不是子view调用requestDisallowInterceptTouchEvent(true)并不是万能,本来就不是万能,为什么我看到好像requestDisallowInterceptTouchEvent(true)都可以让子view拿到点击事件了?

    答:在默认的情况下,ViewGroup的onInterceptTouchEvent的方法是这样的:

    public boolean onInterceptTouchEvent(MotionEvent ev) {
            if (ev.isFromSource(InputDevice.SOURCE_MOUSE)
                    && ev.getAction() == MotionEvent.ACTION_DOWN
                    && ev.isButtonPressed(MotionEvent.BUTTON_PRIMARY)
                    && isOnScrollbarThumb(ev.getX(), ev.getY())) {
                return true;
            }
            return false;
        }
    复制代码

    很明显当我们在手机上点击的时候,来源不是mouse的时候,返回的是false,以为这在下面这段代码当中,intercepted是为false的。

     if (actionMasked == MotionEvent.ACTION_DOWN
                        || mFirstTouchTarget != null) {
                    final boolean disallowIntercept = (mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0;
                    if (!disallowIntercept) {//2
                        intercepted = onInterceptTouchEvent(ev);
                        ev.setAction(action); // restore action in case it was changed
                    } else {
                        intercepted = false;
                    }
                } 
    复制代码

    那这个时候Action_Down事件就被子View拦截到了,如果这个时候,我们在子view的Down事件里面调用requestDisallowInterceptTouchEvent(true)

     @Override
        public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
    
            if (disallowIntercept == ((mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0)) {
                // We're already in this state, assume our ancestors are too
                return;
            }
    
            if (disallowIntercept) {
                mGroupFlags |= FLAG_DISALLOW_INTERCEPT;//1
            } else {
                mGroupFlags &= ~FLAG_DISALLOW_INTERCEPT;//2
            }
    
            // Pass it up to our parent
            if (mParent != null) {
                mParent.requestDisallowInterceptTouchEvent(disallowIntercept);
            }
        }
    复制代码

    其实在这个方法中最重要的还是对mGroupFlags赋值,当为true的时候, mGroupFlags |= FLAG_DISALLOW_INTERCEPT,接下来,当move事件的时候,final boolean disallowIntercept = (mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0的计算变成mGroupFlags | FLAG_DISALLOW_INTERCEPT & FLAG_DISALLOW_INTERCEPT这个的结果还是FLAG_DISALLOW_INTERCEPT,这个值在初始化的时候是protected static final int FLAG_DISALLOW_INTERCEPT = 0x80000;,所以不等于0,进而disallowIntercept为true,直接进入else方法,intercepted = false;接下来的move,up事件都能传递到子view上去了。

    3.Q3调用时机?

    答:综上所述,我们一个手势的操作,会经历down,move,up等操作,子view调用requestDisallowInterceptTouchEvent(true)的时间,是必须在能拿到点击事件,比如我们在down的时候调用了方法,接下来的move,up都会传到子view上了,如果是在子view的move方法中调用的话,那么要确认父view在move的过程中,能将事件传递给子view就好了。

    4.demo:stickScrollView

    展开全文
  • exec函数族

    2017-03-21 20:19:49
    也许不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork产生的,而且由fork产生的进程和进程几乎完全一样,那岂不是意味着系统中所有的进程都应该一模一样了吗?...
  • 几种联系我们并查找更多信息的方法: Fallen Empire Studio ModDB页面: : 青铜时代ModDB页面: : Wildfiregames论坛上的Aristeia论坛: : showforum = 420 如何 步骤1。 下载modpack,如果您正在阅读...
  • exec函数族的详解

    千次阅读 2012-07-18 16:15:49
    也许不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork产生的,而且由fork产生的进程和进程几乎完全一样,那岂不是意味着系统中所有的进程都应该一模一样了吗?...
  • exec函数族 详解

    千次阅读 2010-04-16 11:44:00
    exec函数族也许不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork产生的,而且由fork产生的进程和进程几乎完全一样,那岂不是意味着系统中所有的进程都应该...
  • exec函数族

    2009-10-31 20:35:00
    也许不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork产生的,而且由fork产生的进程和进程几乎完全一样,那岂不是意味着系统中所有的进程都应该一模一样了吗?...
  • 僵尸进程2

    2007-05-31 00:30:00
    也许不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork产生的,而且由fork产生的进程和进程几乎完全一样,那岂不是意味着系统中所有的进程都应该一模一样了吗?...
  • 总的来,思想是让进程accept并处理请求,进程通过进程发来的信息控制请求数与进程数之间的关系。 代码如下: 代码如下: #include #include #include #include #include #include #include #...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    如何列出某个目录下的所有目录 判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问...
  • ExtAspNet_v2.3.2_dll

    2010-09-29 14:37:08
    -ExtAspNet支持原生的AJAX,也就是控件的属性改变在AJAX过程中会反映到页面中,但并不是所有的控件属性都支持AJAX改变。 -加载s.gif图片在本机进行,不会请求extjs.com远程资源(feedback:efrigate43,abaocoole)...
  • java 面试题 总结

    2009-09-16 08:45:34
    如果在子类中定义某方法与其相同的名称和参数,我们该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...
  • -增加示例(data/tree_select_run.aspx),如何选中当前节点的所有节点(feedback:wjl_wjl520)。 +TreeNode的属性NodeId被重命名为NodeID,这是ExtAspNet中的一个命名约定。 -同时更名的还有GridColumn的...
  • Windows之Jim Allchin曾经过不要满足于只知道How-to、小技巧之类的知识,而是应该深入底层了解其内部原理。只有了解了这些安全特性的内在原理,才能真正了解Windows Vista是怎样精心替我们解决安全问题的,才能...
  • Windows之Jim Allchin曾经过不要满足于只知道How-to、小技巧之类的知识,而是应该深入底层了解其内部原理。只有了解了这些安全特性的内在原理,才能真正了解Windows Vista是怎样精心替我们解决安全问题的,才能...
  • Windows之Jim Allchin曾经过不要满足于只知道How-to、小技巧之类的知识,而是应该深入底层了解其内部原理。只有了解了这些安全特性的内在原理,才能真正了解Windows Vista是怎样精心替我们解决安全问题的,才能...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

子有错应该说父有错