Tag: winforms

如何拦截WebBrowser控件中的onbeforeunload事件?

我有一个WinForms应用程序,其中我在WebBrowser控件中托管了一个Web页面。 网页的内容如下: onbeforeunload test Test window.onbeforeunload = function () { return ‘Are you sure you want to leave this page?’; }; 正如您所看到的,我订阅了onbeforeunload事件,该事件允许在离开此页面之前显示确认对话框。 当我单击重新加载页面的锚点时,这可以正常工作。 将显示确认框,用户可以取消重新加载页面。 这在WinForms托管控件中运行良好。 现在,我遇到的困难是在用户关闭WinForms应用程序时拦截并执行此事件(例如,通过单击X按钮)。 我能够在WinForms应用程序中获取此函数的内容,但无论我尝试什么,我都无法获取此函数返回的字符串的内容,以便我以后可以使用它来伪造MessageBox用户试图关闭该应用程序: webBrowser1.Navigated += (sender, e) => { webBrowser1.Document.Window.Load += (s, ee) => { // In order to get the IHTMLWindow2 interface I have referenced // the Microsoft HTML Object […]

如何在没有Winforms的ClassLibrary中使用ActiveX组件

如何在ClassLibrary类型项目中使用ActiveX控件? 我打算稍后从WPF应用程序调用它,但我不想在窗体上的任何地方放置控件,所以我不想使用WindowsFormsHost ; 主要是因为我想在Console App和Windows Service中使用我的库。 在这种情况下,我想要使用的ActiveX控件是video分析组件。 另外,我希望我的组件在已部署的环境中注册自己。

C#左侧的分配必须是变量,属性或索引器

我无法找到能够解决这一特定情况的post。 也许我真的很累。 无论如何,我正在为WinForms进行登录validation。 我有一个名为DBFunctions.cs的类,它保存数据库连接信息等。我坚持使用C#中的“赋值的左侧必须是变量,属性或索引器”错误。 请在下面找到我当前的代码。 提前致谢。 namespace emsdashboard { public partial class Login : Form { public Login() { InitializeComponent(); } //Contains the SQL string and other information to process //user login. public object VerifyUser(string userId, string password) { DBFunctions dbInfo = new DBFunctions(); bool status = false; string verifyUserQry = “SELECT * FROM Employee […]

如何validation用户键入WinForms文本框的字符?

在文本框中输入名称时,我应该编写什么代码来防止除“_”(下划线)之外的任何特殊字符? 如果存在此类字符,则应显示弹出消息。

如何告诉XmlSerializer始终使用序列化属性?

我正在使用DefaultValue属性来获取正确的PropertyGrid行为(它以粗体显示与默认值不同的值)。 现在,如果我想使用XmlSerializer序列化显示的对象,则xml-file中将没有具有默认值的属性的条目。 告诉XmlSerializer序列化这些仍然是最简单的方法是什么? 我需要它来支持“版本”,所以当我稍后在代码中更改默认值时 – serialized属性获取它已序列化的值,而不是“最新”的值。 我可以考虑以下事项: 覆盖PropertyGrid行为(使用自定义属性,因此它将被XmlSerializer忽略); 做一些自定义的xml-serialization,忽略DefaultValue ; 在将对象传递给XmlSeriazer之前对其执行某些操作,以便它不再包含DefaultValue 。 但是我有可能错过了一些秘密财产,它可以做到这一点而没有太大的痛苦= D. 这是我想要的一个例子: private bool _allowNegative = false; /// /// Get or set if negative results are allowed /// [Category(CategoryAnalyse)] [Admin] [TypeConverter(typeof(ConverterBoolOnOff))] //[DefaultValue(false)] *1 public bool AllowNegative { get { return _allowNegative; } set { _allowNegative = value; ConfigBase.OnConfigChanged(); } } //public void […]

保持PictureBox在容器内居中

我正在设计一个简单的图片浏览器,能够进行一些基本的图像处理。 目前我遇到的问题是始终将PictureBox保持在TabPage内部,并保持PictureBox的宽度和大小与其显示的图片相同。 到目前为止,我没有成功。 我有以下代码,我在表单构造函数中调用它来将其定位在中心。 它第一次使图片框居中: private void SetPictureBoxOriginalSizeAndLocation(bool makeImageNull = false, DockStyle dockStyle = DockStyle.None) { if (makeImageNull) picBoxView.Image = null; picBoxView.Dock = dockStyle; var xPoint = tabImageView.Location.X + ((splitContainer.Panel2.Width / 2) / 2); var yPoint = tabImageView.Location.Y; var width = tabImageView.Width / 2; var height = (tabImageView.Height / 2) – toolStripImageView.Height; if (picBoxView.Image == […]

自动滚动面板到底部

我在winforms中有一个面板,在其中我加载了一些用户控件。 每次添加新的用户控件时,我都想自动滚动到面板的底部(当我的面板填充时)。 我怎么能这样做?

C#中的角度测量仪

我想制作一个工具,可以测量表格上两个用户定义的点之间的角度。 我目前没有代码可以执行此操作,因此任何代码都将受到赞赏。 谢谢 UPDATE 它需要是以度为单位,我的点是3个图片盒,每个图片盒的三个点都有不同的颜色供测量角度。 UPDATE 这是我当前的新代码: namespace Angle_Measurer_Tool { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int Dotter = 0; private void button1_Click(object sender, EventArgs e) { Dotter = 1; } public int Distance2D(int x1, int y1, int x2, int y2) { int result = 0; double part1 = […]

如何确保异步方法完成工作?

我对线程很新,所以我的想法和问题可能有点傻:) 我用另一个线程的数据填充WinForm控件,所以当我试图访问控件时我必须调用Invoke() 。 如果我理解正确, treeView.BeginInvoke(/*some Action()*/)使这个Action()在主线程中运行。 但我“开火并忘记”这个BeginInvoke() ,所以我不知道什么时候工作真的完成了。 即使工作线程关闭并且执行返回主线程,我也无法确定所有BeginInvoke()方法是否已完成执行。 这就是为什么即使在返回主线程之后我也无法使用Control来管理我触发的BeginInvoke() 。 实际问题是TreeView.ExpandAll()不起作用。 看一下下面的代码片段。 private void btnGetTree_Click(object sender, EventArgs e) { var treeViewWriter = new Thread(() => UpdateTreeView(new AddXmlNodeArgs(di, null), treeDirectoryContents)); treeViewWriter.Start(); treeViewWriter.Join(); treeDirectoryContents.ExpandAll(); } // method runs on a worker thread public static void UpdateTreeView(AddXmlNodeArgs args, TreeView treeView) { // I will miss details… Here […]

Webforms到Winforms

我是一个非常有经验的Web开发人员,更不用说程序员了。 我从未认真研究的一个领域是winforms开发。 有人可以推荐一些能帮助我熟悉winforms的资源吗? 我发现的许多资源都不太理想,因为它们要么对初学者太过满足,要么缺乏良好的软件设计原则。