jjzjj

.NET WinForms 自定义控件 : how to get a reference to the containing form

有没有办法在创建WinForms自定义控件/用户控件时在运行时获取对放置控件的窗体的引用,以便访问该窗体的各种属性?我宁愿不将对表单的引用传递到控件的构造函数中,因为出于各种原因,我需要保留一个不带参数的默认构造函数。一个例子:我有几个封装了Win32API调用的自定义控件,其中一些调用需要窗口句柄作为参数传递。我希望能够检索包含表单的句柄,以便将其传递给API函数。另一个例子:我有一个自定义控件,它提供“toast”式的用户通知。我希望可以选择在相对于主应用程序位置的位置打开通知表单,例如以主窗口为中心,向右关闭等。显然,这是不可能的,不知道主应用程序窗口的坐标。在某些情况下,我可以

c# - Visual C# 2010 速成版 : Same Form But Different Size on Win7 and WinXP

我在Win7和XP上都使用VisualC#Express2010。我有一个Windows窗体应用程序项目,并且有一个SevenXPForm(继承窗体)。我在Win7的VisualC#Express2010中创建它,并在属性面板中设置.MinimumSize=300,300.Size=300,300在窗体中间有一个TabControl:但是,当我保存项目/解决方案并在WinXP上的VisualC#Express2010中打开时,大小更改为:.MinimumSize=300,279.Size=300,279并且TabControl不再位于表单的中间:当我再次在Win7上打开它时,它又回来了

时间:2019-01-18 标签:c#windowsforms: Form Close Event Cancel Button

我有一个Form_Closing事件提示用户文件是否已更改以在对文件进行更改时保存(标准是/否/取消选项)。取消是事情没有按预期进行的地方。如果我选择"file"->“新建”并且存在一个包含更改的现有文件,我会按预期收到提示,当我选择“取消”时会显示新表单而不是停留在当前表单上,我最终会打开两个表单一次。这是MainForm(新建文件)代码:if(editForm!=null){//CloseexistingEditorformeditForm.Close();//OpennewformeditForm=newEditorForm(this);//CloseFormEventsedit

C# Windows Form_Closing 问题

当用户单击应用程序右上角的红色“X”按钮时,我似乎很难弹出对话框并正常运行。我可以让对话框看起来是在询问他们是否真的要关闭应用程序,但无论他们点击什么,它都会关闭表单。我的代码如下;privatevoidMain_FormClosing(objectsender,FormClosingEventArgse){DialogResultdr=MessageBox.Show("Areyousurewanttoclose?","CloseProgram",MessageBoxButtons.OKCancel);if(dr==DialogResult.Cancel){e.Cancel=false

c# - 标题栏不可点击 Form.TransparencyKey = White

如果我使用WinForm模板创建C#(.NET3.5)应用程序并将Form.TransparencyKey属性设置为白色,则标题栏和关闭、最小化、最大化按钮在运行该应用程序时不起作用,单击它们会导致窗口失去焦点,就像在窗口外单击一样。当鼠标悬停在关闭等上时没有动画。这一直持续到窗口被最小化(窗口上的按钮不起作用所以必须使用winkey+m或通过任务栏完成)然后恢复。在此之后,窗口似乎表现正常。这种行为背后的机制是什么?环境:WindowsVista(Aero)和VS2008。 最佳答案 与TransparencyKey颜色匹配的窗口

c# - 当 DialogResult 为 No 时防止 Form 关闭

我在Windows窗体申请表的关闭事件中使用以下代码:privatevoidMain_FormClosing(objectsender,FormClosingEventArgse){DialogResultdr=MessageBox.Show("Areyousureyouwanttoquit?","LeavingApp",MessageBoxButtons.YesNo,MessageBoxIcon.Question);if(dr==DialogResult.No){return;}elseApplication.Exit();}但问题是,只要用户单击"is",应用程序就会结束,但当用户

windows - MFC - 在显示对话框后立即执行代码(相当于 Form.Shown 的 .NET)

我正在对C++MFC项目进行一些小改动。我是.NET开发人员,所以Windows编程对我来说是新的。我需要在CDialog第一次完全显示(绘制)后立即启动一些方法,但只有一次。我该怎么做?在.NET中,我会处理Form.Shown事件。我需要处理一些消息吗?哪个?我是否需要覆盖某些CDialog方法?或者没有简单的方法?我正在考虑处理WM_ACTIVATE,然后使用一个标志来确保我只调用另一个方法一次。 最佳答案 在这里找到答案:Waitinguntilthedialogboxisdisplayedbeforedoingsometh

.net - ShowDialog 返回类型 : Form vs. 窗口

在WPF/.Net中,System.Windows.Window和System.Windows.Forms.Form有.ShowDialog方法。区别在于Windows.Windowversion返回一个可为null的bool(bool?或Nullable),而Forms.Form版本直接返回bool.我还没有看到可为nullable的bool曾经是null,也找不到它会出现在MSDN文档中的情况。谁能解释为什么Windows.Window.ShowDialog返回可空?我应该检查一下吗?如果我看到null是什么意思? 最佳答案 请

windows - 在不同模块中 Access VBA Form Private Sub 调用 Public Function

在我的数据库中,我在一个模块中有一个公共(public)函数,它接收一个SQL字符串并返回一个打开的记录集。此函数在被此模块和其他模块中的其他公共(public)子程序调用时工作正常。但是,如果我尝试使用完全相同的代码调用相同的函数,则会出现编译错误:“参数数量错误或属性分配无效。”如果我将确切的代码剪切并粘贴到另一个模块中作为公共(public)子模块,它可以正常工作。我怀疑这个问题与命名或隐藏变量有关。不幸的是,我无法通过搜索找到任何解决方案。PublicFunctionQuery(SQLAsString)AsADODB.RecordsetDimcnnConnAsADODB.Con

c# - 我可以遍历 Collection.Request.Form 吗?

我有一些具有唯一ID的复选框。是否可以在一个表单集合中找到所有的checkbox+uniquenum?有点像-foreach(variteminCollection.Request.Form["checkbox"+withUniqueIDNum]){//code} 最佳答案 没有。相反,您可以遍历所有键,并检查它们是否以checkbox开头。例如:foreach(stringkeyinRequest.Form){if(!key.StartsWith("checkbox"))continue;...}NameValueCollecti