performclick(performclick app能风控吗)
android中performclick()方法的作用?
使用 PerformClick 方法以编程方式引发按钮的 Click 事件。
操作过程
在“新建项目”对话框中的“模板”窗格中,单击“Windows 窗体应用程序”,然后单击“确定”。
一个新的 Windows 窗体项目随即打开。
将两个 Button 控件从“工具箱”中拖动到窗体上。
在窗体中,双击第一个按钮 (button1) 以创建 Click 事件处理程序。
在 button1_Click 事件处理程序中,键入以下代码行。MessageBox.Show("button1.Click test.");
右击这些代码,然后单击“视图设计器”。
双击第二个按钮 (button2) 以创建 Click 事件处理程序。
在 button2_Click 事件处理程序中,键入以下代码行。button1.PerformClick();
运行程序OK。
C#在form1初始化后,调用了this.button1.PerformClick,结果没有触发按钮,问题出在哪儿?
您好。先来回答您的问题。
我们知道,按钮点击后,会触发一个click事件。
当你将事件关联到一个函数的时候,程序就会执行你想做的事。
比如。界面上有个button1。它的click事件,关联到了button_Click()函数。
这个函数本身的名字是无所谓的,你也可以让它叫做funTest()
然后在将click事件关联的时候改成这个名字
this.button1.Click?+=?new?System.EventHandler(this.funTest);
所以,我们回头来看问题里的两种方式。
1、PerformClick()这种方式,是模拟你点击了button1。将点击这个动作传递到按钮。
按照道理,此时应该触发button1_Click(),然后执行里面的语句。
为什么没反应呢?因为你的这句代码写在了窗体的构造函数里。
即使已经执行完毕InitializeComponent(),完成了初始化。但此时,整个窗口并没有被show出来。
所有的定义和属性都还保存在内存之中,窗口没有被生成图形,生成控件图像,因为没有被show出来。所以此时对按钮进行点击是没有作用的。时机太早了。
2、button1_Click(null,null)而这种方式,属于你强行调用了本来应该由按钮触发的事件函数。
你跳过了按钮click触发的这一层,就相当于你调用普通的一个函数一样。所以他当然能够被执行。
但是这种方式并不被推荐,因为原本事件函数中应该正常的接收到sender和e两个参数。这样的代码容易产生空引用错误的隐患。
至少也应该写成?button1_Click(button1,EventArgs.Empty)
那如果要用PerformClick(),在什么时机下用才能有效果呢?
比如:
????????protected?override?void?OnLoad(EventArgs?e)
????????{????????????
????????????base.OnLoad(e);
????????????button1.PerformClick();
????????}
你只需要写在OnLoad里,就可以有效果。
因为此时窗口已经接收到Show。
================================题外话==================================
楼主,我看到你的问题,意识到你可能犯了一个新手容易犯的误解。
我猜想,大概是你希望窗体打开的时候,也顺便做一次按钮点击事件里的事。
对于这个问题,一般的解决思路是,将要做的事重构成一个专门的函数进行调用。比如:
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Text;
using?System.Windows.Forms;
namespace?WindowsFormsApplication1
{
????public?partial?class?Form1?:?Form
????{
????????public?Form1()
????????{
????????????InitializeComponent();
????????????ShowName();
????????}
????????private?void?button1_Click(object?sender,?EventArgs?e)
????????{
????????????ShowName();
????????}
????????private?static?void?ShowName()
????????{
????????????string?name?=?"小明";
????????????MessageBox.Show("我是"?+?name?+?"!");
????????}
????}
}
假设ShowName()这个函数就是你要做的事情。
那么你只需要把它独立出来。
在构造函数末尾,和按钮Click事件函数里都调用它,就可以解决了。
而且,这样一来,当别人阅读代码,阅读到
????????public?Form1()
????????{
????????????InitializeComponent();
????????????ShowName();
????????}
这里的时候,他看到这个函数名,他也能够理解你想做的是“显示名字”
而不是“点击按钮1”这种不明其意的操作。代码的可读性更好。
明白了吗?谢谢采纳。
Android视图performClick和callOnclick的区别
作用 : View类的performClick和callOnclick函数都可以实现,不用用户手动点击,直接触发View的点击事件。
区别有如下两点:
1) API等级
performClick是在API 1中加入
callOnClick是在API 15 中加入
2)代码实现层面
看两个方面的代码实现,如下:
/**
* Directly call any attached OnClickListener. Unlike {@link #performClick()},
* this only calls the listener, and does not do any associated clicking
* actions like reporting an accessibility event.
*
* @return True there was an assigned OnClickListener that was called, false
* otherwise is returned.
*/
public boolean callOnClick() {
ListenerInfo li = mListenerInfo;
if (li != null li.mOnClickListener != null) {
li.mOnClickListener.onClick(this);
return true;
}
return false;
}
/**
* Call this view's OnClickListener, if it is defined. Performs all normal
* actions associated with clicking: reporting accessibility event, playing
* a sound, etc.
*
* @return True there was an assigned OnClickListener that was called, false
* otherwise is returned.
*/
public boolean performClick() {
final boolean result;
final ListenerInfo li = mListenerInfo;
if (li != null li.mOnClickListener != null) {
playSoundEffect(SoundEffectConstants.CLICK);
li.mOnClickListener.onClick(this);
result = true;
} else {
result = false;
}
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
return result;
}
从代码中可以看出,callOnClick是performClick的简化版,不包含点击播放声音,不具有辅助功能,那么什么是辅助功能,给出官方介绍如下:
许多Android用户有不同的能力(限制),这要求他们以不同的方式使用他们的Android设备。这些限制包括视力,肢体或与年龄有关,这些限制阻碍了他们看到或充分使用触摸屏,而用户的听力丧失,让他们可能无法感知声音信息和警报。
Android提供了辅助功能的特性和服务帮助这些用户更容易的使用他们的设备,这些功能包括语音合成、触觉反馈、手势导航、轨迹球和方向键导航。Android应用程序开发人员可以利用这些服务,使他们的应用程序更贴近用户。
Android 模拟点击事件
可以直接调用它的监听者,低版本方法是performclick,高版本是callonclick,比如你虚拟手指的初始化的对象是a,你给它设置了动作监听,你点击屏幕下方的按钮时,这个按钮的动作处理中就可以调用a.performclick()或a.callonclick(),这样就调用到了a的监听者,从而达到点击a的效果
(C#)自定义控件的PerformClick方法。
//这是每个图形的单击事件。
//把每个图形放到单独一个pictureBox控件上。
private void pictClick(object sender, EventArgs e)
{
pnlClick((sender as Control).Parent,null);//panel单击事件
}
//panel单击事件
prvoid void pnlClick(object sender, EventArgs e)
{
}
//如果你不把单独的图形放入,单独的控件的话。
//那就这样。
private void DrawClick()
{
this.ClickEvent();//调用这个方法。
}
private void pnlClick(object sender, EventArgs e)
{
this.ClickEvent();//也调用这个方法。
}
android中View.performClick()触发无反映
在开发项目时遇到使用Button的performClick()方法无响应,这里记录下解决方法。callOnClick()同理。
其实上面方案已经可以解决了,简单记录下原因。