Tag: winforms

无法将文件从obj \ Debug复制到bin \ Debug

我在C#中有一个项目,每次尝试编译项目时都会出现此错误: (无法将文件“obj \ Debug \ Project1.exe”复制到“bin \ Debug \ Project1.exe”。进程无法访问文件“bin \ Debug \ Project1.exe”,因为它正在被另一个进程使用。 …所以我必须closures任务pipe理器的过程。 我的项目只有一种forms,没有multithreading。 什么是解决scheme(不重新启动VS或杀死进程)? 这是我们如何解决这个问题的错误代码?

每X秒执行指定的function

我有用C#编写的Windows窗体应用程序。 打印机在线或不在线时,以下function将被检查: public void isonline() { PrinterSettings settings = new PrinterSettings(); if (CheckPrinter(settings.PrinterName) == "offline") { pictureBox1.Image = pictureBox1.ErrorImage; } } 并在打印机处于脱机状态时更新图像。 现在,我怎么能每2秒执行一次isonline()函数,所以当我拔下打印机时,窗体上显示的图像( pictureBox1 )会变成另一个图像而不重新启动应用程序或进行手动检查? (例如通过按下运行isonline()函数的“刷新”button)

.NET / Windows窗体:记住窗口大小和位置

我有一个Windows窗体应用程序与一个正常的窗口。 现在,当我closures应用程序并重新启动它时,我希望主窗口显示在屏幕上的相同位置,并且与closures时的大小相同。 在Windows窗体中是否有一种简单的方法来记住屏幕位置和窗口大小(如果可能的话还有窗口状态)还是一切都必须手动完成?

我怎样才能在c#中进行数据绑定?

我有以下class级 公共课车 { public name {get; 组;} } 我想以编程方式将其绑定到文本框。 我怎么做? 在黑暗中拍摄: … 汽车=新车(); TextEdit editBox = new TextEdit(); editBox.DataBinding.Add(“Name”,car,“Car – Name”); … 我得到以下错误 “无法绑定到目标控件上的”名称“。 我做错了什么,我该如何做? 我发现数据绑定概念有点难以从networking开发中掌握。

避免在跨线程WinForm事件处理中调用/ BeginInvoke的困境?

我仍然困扰于WinForm UI中的后台线程。 为什么? 以下是一些问题: 显然最重要的问题是,我不能修改一个控制,除非我在创build它的同一个线程上执行。 如你所知,Invoke,BeginInvoke等只有在创buildControl之后才可用。 即使在RequiresInvoke返回true之后,BeginInvoke仍然可以抛出ObjectDisposed,即使它不抛出,如果控件被销毁,它也不会执行代码。 即使在RequiresInvoke返回true之后,Invoke也可以无限期地挂起,等待与Invoke调用同时处理的控件执行。 我正在寻找一个优雅的解决scheme来解决这个问题,但在进入我所寻找的细节之前,我想我会澄清这个问题。 这是为了解决一般问题,并在后面加一个更具体的例子。 对于这个例子,假设我们通过互联网传输大量的数据。 用户界面必须能够显示正在进行的传输的进度对话框。 进度对话框应该不断快速更新(每秒更新5到20次)。 用户可以随时closures进度对话框并根据需要再次调用。 而且,假设参数为假,如果对话框是可见的,它必须处理每个进度事件。 用户可以在进度对话框中点击取消,并通过修改事件参数,取消操作。 现在我需要一个解决scheme,将适合下面的一些约束: 允许工作者线程调用Control / Form上的方法,并阻止/等待,直到执行完成。 允许对话本身在初始化或类似的地方调用这个相同的方法(因此不使用调用)。 处理方法或调用事件没有实施的负担,解决scheme应该只改变事件订阅本身。 适当地处理阻塞调用到可能正在处理的对话框中。 不幸的是,这不像检查IsDisposed那么简单。 必须能够与任何事件types一起使用(假定EventHandlertypes的委托) 不得将exception转换为TargetInvocationException。 该解决scheme必须使用.Net 2.0及更高版本 那么,鉴于上面的限制,这可以解决吗? 我搜遍了无数的博客和讨论,可惜我还是空手而归。 更新:我知道这个问题没有简单的答案。 我只在这个网站上呆了几天,而且我看到一些有很多经验的人回答了问题。 我希望这些人中的一个已经足够的解决了这个问题,我不用花一个星期左右的时间来构build一个合理的解决scheme。 更新#2:好吧,我将尝试更详细地描述问题,看看有什么(如果有的话)摆脱。 下面的属性可以让我们确定它的状态有一些事情引起关注… Control.InvokeRequired =如果在当前线程上运行,或者IsHandleCreated为所有父项返回false,则logging为返回false。 InvokeRequired实现可能会抛出ObjectDisposedException,甚至可能重新创build对象的句柄,这让我很困扰。 而且,因为InvokeRequired在我们无法调用的时候(Dispose正在进行)可以返回true,即使我们可能需要使用invoke(Create in progress),它也可以返回false,所以这在任何情况下都是不可信的。 唯一的情况下,我可以看到我们可以信任的InvokeRequired返回false是当IsHandleCreated在调用之前和之后都返回true(BTW的MSDN文档为InvokeRequired提及检查IsHandleCreated)。 Control.IsHandleCreated =如果句柄已经分配给控件,则返回true; 否则,是错误的。 虽然IsHandleCreated是一个安全的调用,但如果控件正在重新创build它的句柄,它可能会崩溃。 这个潜在的问题似乎可以通过在访问IsHandleCreated和InvokeRequired时执行locking(控制)来解决。 Control.Disposing =如果控件正在处理过程中,则返回true。 Control.IsDisposed =如果控件已被处置,则返回true。 我正在考虑订阅Disposed事件,并检查IsDisposed属性来确定是否BeginInvoke将完成。 这里最大的问题是在Disposing – > […]

点击和鼠标点击有什么区别?

点击和鼠标点击有什么区别?

新的数据写入时,富文本框滚动到底部

我的程序调用Java,然后将stdoutredirect到RichTextBox 。 我的问题是,每次写入数据时,垂直滚动条总是停留在方框的顶部。 即使你滚动到底部,一旦新的数据被写入,它会到达最上面。 我想相反。 所以当写入新的数据时,它停留在底部。 我怎样才能做到这一点?

如何检查一个窗体是否已经打开,如果是,closures它?

我有一个窗体“fm” ,它是一个简单的信息窗口,每10分钟打开一次( fm.Show(); )。 我怎么能每隔10分钟检查一次,如果“fm”格式是打开的,打开它就closures它并再次打开! 现在,窗体fm总是用form fm = new form(); 所以当我试图检查表单是否打开时,即使以前只有一个表单,它也会一直是错误的,并打开一个新窗口! 我需要有一个工具来给它一个独特的身份,然后检查是否打开这个具有唯一身份的forms! 我不想只更新窗体(fm)上的数据,因为我有一个复杂的button信息。 表单名称是"UpdateWindow" 解决使用以下内容: Form fc = Application.OpenForms["UpdateWindow"]; if (fc != null) fc.Close(); fc.Show();

如何将文件文件发送到打印机并进行打印?

基本前提是: 我的用户点击一些小玩意儿,一个PDF文件被吐出到他的桌面。 有没有办法让我将这个文件发送到打印机队列,并打印到本地连接的打印机? string filePath = "filepathisalreadysethere"; SendToPrinter(filePath); //Something like this? 他会多次做这个过程。 对于教室里的每个学生,他都要打印一张小小的成绩单。 所以我为每个学生生成一个PDF文件,我想自动化打印过程,而不是让用户生成pdf,打印,生成pdf,打印,生成pdf,打印。 有关如何解决这个问题的任何build议? 我使用Windows Forms .NET 4在Windows XP上运行。 我发现这个StackOverflow的问题,接受的答案表明: 一旦你创build了你的文件,你可以通过命令行来打印它们(你可以使用System.Diagnostics命名空间中的Command类来实现) 我将如何做到这一点?

删除Windows窗体中的标题栏

我怎样才能删除窗体顶部的蓝色边框? (我不知道它的名字。)