我有一个UserControl
,我需要通知父页面点击了一个按钮UserControl
.如何UserControl
在主页面上引发事件并将其捕获?我尝试过使用static
,很多人建议我去参加活动!
我有一个具有开始按钮的表单(允许用户根据需要反复运行进程),并且我想btnStart.Click
在表单加载时发送一个事件,以便进程自动启动.
我对btnStart.Click
事件有以下功能,但是我如何实际告诉Visual Basic'假装有人点击了按钮并触发了此事件'?
我试过非常简单,基本上可行.但是,Visual Studio给了我一个警告Variable 'sender' is used before it has been assigned a value
,所以我猜这不是真正的方法:
Dim sender As Object
btnStart_Click(sender, New EventArgs())
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用RaiseEvent btnStart.Click
,但是会出现以下错误:
'btnStart'不是'MyProject.MyFormClass的事件
Imports System.ComponentModel
Partial Public Class frmProgress
Private bw As BackgroundWorker = New BackgroundWorker
Public Sub New()
InitializeComponent()
' Set up the BackgroundWorker
bw.WorkerReportsProgress = True
bw.WorkerSupportsCancellation = True
AddHandler bw.DoWork, AddressOf bw_DoWork
AddHandler bw.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler bw.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
' Fire the 'btnStart.click' event when …
Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式在WPF控件上手动触发MouseLeftButtonDown事件,因为我使用的是Microsoft Surface SDK,它不会触发MouseLeftButtonDown事件,而是触发ContactDown事件.基本上我正在尝试将MouseLeftButtonDown事件向下推送到控件,以在处理ContactDown事件时触发控件上的正确行为.
我猜我必须以某种方式使用控件上的RaiseEvent方法来实现MouseButtonEventArgs,但是我在查找参数时遇到了一些麻烦.
在此先感谢您的帮助!
我已经将类从c#转换为vb.net ..我的意思是我要压缩asp.net页面以减少页面大小,问题是在我转换为vb.net之后,我有这个错误
描述:编译服务此请求所需的资源时发生错误.请查看以下特定错误详细信息并相应地修改源代码.
编译器错误消息:BC32022:'公共事件PostRequestHandlerExecute(sender As Object,e As System.EventArgs)'是一个事件,不能直接调用.使用'RaiseEvent'语句来引发事件.
来源错误:
第178行:
第179行:私有子Init(上下文为HttpApplication)实现IHttpModule.Init
第180行:context.PostRequestHandlerExecute + = New EventHandler(context_BeginRequest)
第181行:结束子
第182行:
我试图为asp.net实现Gzip ...提前感谢....
下面是我的代码,首先是我提出事件的地方,第二部分是我在另一个类中使用它的地方.它看起来很简单,但是日志显示即使事件被提升一次,事件也会在消耗此事件的类上触发20次以上.有任何想法吗?
IBSerialPort
类:
public delegate void PacketReceivedHandler(object sender, PacketReceivedEventArgs e);
public event PacketReceivedHandler OnPacketReceived;
public class PacketReceivedEventArgs : EventArgs
{
public Packet PacketReceived { get; private set; }
public PacketReceivedEventArgs(Packet packet)
{
PacketReceived = packet;
}
}
// raise event
if (OnPacketReceived != null)
{
Log("This is only called ONCE!");
PacketReceivedEventArgs args = new PacketReceivedEventArgs(data);
OnPacketReceived(this, args);
}
Run Code Online (Sandbox Code Playgroud)
使用IBSerialPort
和使用其OnPacketReceived
事件的类:
IBSerialPort ibSerialPort = null;
..
if (ibSerialPort == null)
{
Log("This is only called once");
ibSerialPort = …
Run Code Online (Sandbox Code Playgroud) 在C#中,你做这样的事情:
if (Changed != null)
Changed(this, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)
但是你在VB.NET中做了什么?
有RaiseEvent
,但是
RaiseEvent Changed(Me, EventArgs.Empty)
Run Code Online (Sandbox Code Playgroud)
实际上检查某事已订阅该事件?
我有几个标签,全部编码如下:
Public assessment_menu_button As New Label
Public current_label_clicked As New Label
AddHandler assessment_menu_button.Click, AddressOf click_assessment_menu_button
Private Sub click_assessment_menu_button(ByVal sender As System.Object,
ByVal e As System.EventArgs)
current_label_clicked = sender
' do some other stuff
End Sub
Run Code Online (Sandbox Code Playgroud)
然后,稍后在我的程序中,我有一个 Sub,它需要对放入 current_label_clicked 的任何标签执行单击,并在其上引发单击事件。就像是
Private Sub whatever()
current_label_clicked.performClick()
End Sub
Run Code Online (Sandbox Code Playgroud)
但你不能用标签做到这一点。
那么如何引发标签的点击事件呢?
谢谢。
这是一个愚蠢的问题......我正试图将一个图片框拖放到一个面板上.我遵循了一些例子,但它不起作用.从不引发面板的DragDrop事件.我在网站上搜索了一个解决方案并发现了一年多的两个主题,但他们的解决方案没有用.我创建了一个新项目,只有这个代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
panel1.DragDrop +=new DragEventHandler(panel1_DragDrop);
panel1.DragOver +=new DragEventHandler(panel1_DragOver);
}
private void panel1_DragOver(object sender, DragEventArgs e)
{
Console.WriteLine("DragOver");
}
private void panel1_DragDrop(object sender, DragEventArgs e)
{
Console.WriteLine("DragDrop");
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Console.WriteLine("Mouse");
pictureBox1.DoDragDrop(pictureBox1.Text, DragDropEffects.All);
}
}
Run Code Online (Sandbox Code Playgroud)
我还将面板的AllowDrop和窗体设置为true.DragOver和MouseDown被引发.此外,当我拖动图片框时,光标变成一个禁止的圆圈,就像是一个不允许的操作.有没有办法让光标成为图片框中的图像?我不希望图片框移动,只是为了向面板添加项目.
我收到此错误:
错误1'公共事件NewFrame(sender As Object,eventArgs As
AForge.Video.NewFrameEventArgs)'是一个事件,不能直接调用.
使用'RaiseEvent'语句来引发事件.
C:\ Users\Jonathan\Documents\Visual Studio 2010\Projects\Stream\Stream\Form1.vb
9 9流
我的代码是:
我怎么能解决这个问题?
raiseevent ×9
events ×4
vb.net ×4
c# ×3
.net ×1
aforge ×1
click ×1
gzip ×1
raise ×1
serial-port ×1
silverlight ×1
windows ×1
wpf ×1