eventhandler,自定义控件怎么改变主窗体控件的属性

伏羲号

eventhandler,自定义控件怎么改变主窗体控件的属性?

这里方法有很多,给你列举两种。

eventhandler,自定义控件怎么改变主窗体控件的属性

1、直接把Button1暴露出来。在自定义控件的窗体编辑器中,选择Button1,将它的Modifier属性设为Public。进入主窗体,写一个响应函数:

private void Button1_Click(object sender, EventArgs e)

{

button2.Text = "aa";

}

接下来在主窗体的New函数/Load事件里面绑定:

自定义控件1.button1.Click 加号= new EventHandler(Button1_Click);

这样就可以了。

2、让Button1操作主窗体。

在主窗体(假设为Form2)的窗体设计器里面,把button2的Modifier设为Public。然后到自定义控件中button1的Click事件中:

Form2 f2 = this.Parent as Form2;

f2.button2.Text = "aa";

上面两种方法都是将窗体和自定义控件耦合在了一起,如果你不追求完美的话这样就可以了。否则你还可以做个带事件的接口,让自定义控件实现它,单击button1触发这个事件,让窗体绑定。

控件的创建?

单击button1在panel上动态新建了多个label,现在想要点击选择某个动态新建的label,按button2,可以把这个label删掉在button1_Click事件中,创建label,代码:

Labellb1=newLabel(); lb1.Name="panel"+j; lb1.BackColor=Color.Transparent; lb1.BorderStyle=BorderStyle.FixedSingle; Panel1.Controls.Add(lb1);为这些label增加Click事件 Labellb1=newLabel()

; lb1.Name="panel"+j; lb1.BackColor=Color.Transparent; lb1.Click+=newEventHandler(label_Click)

; lb1.BorderStyle=BorderStyle.FixedSingle;Panel1.Controls.Add(lb1);stringname=""

;privatevoidlabel_Click(objectsender,EventArgse){ Labellbl=senderasLabel; name=lbl.Name;

}然后在Button2的Click中:

privatevoidbutton2_Click(objectsender,EventArgse){ Labellbl=Panel1.Controls[name]

; if(lbl!=null) Panel1.Controls.Remove(lbl);}

如何将登录信息传给主界面?

在c#中,将登录信息传递给主界面可以通过以下几种方法实现:

1. 通过属性或构造函数传递

登录界面和主界面可以通过共享一个对象或引用来传递登录信息。登录界面可以在成功登录后,设定主界面的属性或者构造函数参数来传递登录信息。主界面可以通过获取这些属性或者构造函数参数来获取登录信息。

2. 通过静态变量传递

在c#中,静态变量在整个应用程序中是共享的。如果登录界面和主界面属于同一应用程序,可以使用静态变量来传递登录信息。登录界面在登录成功后,可以将登录信息存储在静态变量中,主界面在需要使用登录信息时,可以直接获取静态变量的值。

3. 通过事件传递

可以在登录界面定义一个登录成功的事件,当用户成功登录后,登录界面可以触发这个事件,并且传递登录信息作为事件参数。主界面可以订阅这个事件,并且在事件处理程序中获取登录信息。

4. 通过委托传递

委托是c#中一种用于封装方法的类型。可以创建一个包含登录信息的委托,在用户成功登录后,登录界面可以将这个委托传递给主界面,在需要使用登录信息的地方,主界面可以调用这个委托获取登录信息。

以上是几种传递登录信息给主界面的方法,具体哪种方法适用于你的应用程序,需要根据具体情况来选择。

桌面应用程序中调用Windows?

尽管Interl Ultrabook 支持内置在Windows 7或者更高版本的.NET 4 库中的本地传感器, 我想访问完整的内置在Windows 8自身中的传感器和位置平台。这些API 通过COM可用且我可以通过COM调用,但是通过WinRT层来调用它们就更好了。这就是WinRT存在的原因. 这让我思考WinRT以及它的意义。我在数月前发表了一篇博文真正清理了些东西,但是我总觉得所有的各种图表试图解释如何把东西都放在一起为什么会太复杂。 免责声明:所有图表就其性质而言过于简单化。我的工作有关Web方面,而不是Windwos 方面,所以这都是我自己的意见和推测,且用我自己的时间完成。我不在Windows组织中,我只是一个试图为婴儿写一个应用程序的玩家。 我想它不像所有这些图表那么复杂。我画这个是为了帮助自己理解。 就像C 语言有一个C运行时为它提供了一系列功能支持及功能的调用规定,Windows运行时(WinRT)是为Windows和它的语言工作的。这些API和运行时包含有调用规定的元数据,这些规定使得调用WinRTAPI比调用COM更容易。 在图表中看出我是如何从.NET CLR中调用任何API的吗?在我想调用传感器API的情况下,当它们是ultimately Win32 API或者 COM API, 我想使用最高层的调用规定来调用它们,这是一个非常友好的WindowsRT 。 从C# 桌面应用程序调用WinRT API 我喜欢使用小型的控制台应用程序来做测试,但是这些不是“Windows Store应用程序”。所以我能被允许从我的桌面或者控制台应用程序中调用WinRT吗? 当然可以。在MSDN文档中有一章节列出了所有可以从桌面调用的针对Windows 8的WinRT API. 我可以明确地在文档中确认LightSensor 类并且确保它是允许被桌面应用程序调用的。 虽然没有明确定义,但是有文档描述了如何在非Windows Store应用程序中添加WinRT引用. 从一个桌面应用程序添加引用到WinRT 文档说的有些隐晦: 在桌面项目中,核心选项卡默认不会显示。用户可以选择Windows Runtime编写代码,通过打开快捷菜单中的项目节点,选择不加载项目,添加以下代码片段,再次打开快捷菜单中的项目节点,然后选择加载项目。现在,当用户从项目中调用资源管理器对话框,核心选项卡就会显示了。<PropertyGroup><TargetPlatformVersion>8.0</TargetPlatformVersion></PropertyGroup> 我将会制作一个.NET4.5 C#的桌面应用程序。我将修改.csproj 文件,添加TargetPlatformVersion行。我将会从解决方案资源管理器的节点的上下文菜单选择添加引用。 我将会添加一小段代码来检查我笔记本上的光传感器的状态:LightSensor light = LightSensor.GetDefault();if (light != null){uint minReportInterval = light.MinimumReportInterval;uint reportInterval = minReportInterval > 16 ?minReportInterval : 16;light.ReportInterval = reportInterval;light.ReadingChanged += light_ReadingChanged; //event hander } 然而,当我编译应用程序时,我得到了一个错误,错误出现在我试着挂钩一个eventhandler委托的那一行。用“+=”语言添加多播委托无法工作。 Error 1 Property, indexer, or event 'Windows.Devices.Sensors.LightSensor.ReadingChanged' is not supported by the language; try directly calling accessor methods 'Windows.Devices.Sensors.LightSensor.add_ReadingChanged (Windows.Foundation.TypedEventHandler Windows.Devices.Sensors.LightSensorReadingChangedEventArgs>)' or 'Windows.Devices.Sensors.LightSensor.remove_ReadingChanged (System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)' 为了解决这个问题,并且将适当的应用程序集加载到我的应用程序来支持从我的桌面应用程序调用WinRT,我需要添加引用System.Runtime 和 System.Runtime.InteropService.WindowsRuntime.dll. 它在我系统的C:\Program Files (x86)\ReferenceAssemblies\Microsoft\Framework\.NETCore\v4.5目录下。 现在编译我的应用程序。我甚至可以将委托改写成lambda表达式这种样式。light.ReadingChanged += (s, a) =>{Console.WriteLine(String.Format("There was light!{0}", a.Reading.IlluminanceInLux));}; 现在我能够运行我的小型控制台应用程序了,感知光线并且检测它的行动。以下是一个截图,显示了一束光照在我笔记本电脑的结果。你可以看到Ambient LightSensor检测到它并且输出到控制台。 现在非Windows Store应用程序调用Windows RT 应用程序能够使用的工具就是Visual Studio中的一个小手册,它的基本能力和运行时必须为我很好的工作。希望这几个手动操作步骤以后能变成某个点的复选框。 看到MSDN文档包涵有关API如何实际被桌面和Windows Store应用程序调用的详细内容也让人感到高兴。 这周的发起者:你的想法。你的应用程序。30天。

iView的分页方法on?

在设计自定义分页控件的时候,在分页控件类中定义一个当页码改变时触发的事件。

在类中判断事件是否被外部注册,如果已注册,则将事件的处理交给事件注册者。

public event EventHandler OnPagerChanged; //判断 if (OnPagerChanged!=null)

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,81人围观)

还没有评论,来说两句吧...