Questions tagged «winforms»

WinForms是Windows Forms的非正式名称,Windows Forms是Microsoft .NET Framework和Mono中的GUI类库。此标签中的问题还应使用目标框架([.net]或[mono])进行标签,并且通常应使用编程语言标签进行标签。



11
在Windows Forms C#应用程序中拥有配置文件的最简单方法
我真的是.NET的新手,但是我仍然对配置文件的工作原理一无所知。 每次我在Google上进行搜索时,都会得到有关web.config的结果,但是我正在编写Windows Forms应用程序。 我发现我需要使用System.Configuration命名空间,但是文档没有帮助。 如何定义我的配置文件是XYZ.xml?还是配置文件具有“默认”名称?我还是不明白。 另外,如何定义新部分?我真的需要创建一个从ConfigurationSection继承的类吗? 我只想拥有一个带有以下值的配置文件: <MyCustomValue>1</MyCustomValue> <MyCustomPath>C:\Some\Path\Here</MyCustomPath> 有一个简单的方法吗?您能以一种简单的方式解释如何从一个简单的配置文件中读取和写入吗?

30
生成错误:“该进程无法访问该文件,因为该文件正在被另一个进程使用”
我有一个C#webforms应用程序,直到今天一直在畅快地工作。 今天,突然之间,每当我尝试运行该应用程序时,都会收到文件锁定错误: 无法将文件“ obj \ Debug \ MyProject.exe”复制到“ bin \ Debug \ MyProject.exe”。该进程无法访问文件“ bin \ Debug \ MyProject.exe”,因为它正在被另一个进程使用。 谷歌搜索错误不会带来明显的错误,即VS认为文件已锁定。它是绝对的Visual Studio本身锁定文件,因为当我关闭VS并重新打开它,项目执行罚款-第一次。当我尝试第二次运行它时,出现文件锁定错误。 每次我要运行该应用程序时,关闭VS并重新打开都不是可行的解决方法!如何找出锁定文件的内容,并阻止它被锁定? 编辑:另一个有趣的发现:我什至不必运行该应用程序。只需编译一次就会导致文件锁定。我不能连续两次编译! 此问题特定于我的解决方案中的一个项目。所有其他项目都可以正常运行,并且可以执行多次。只是这个项目被锁定了。

7
C#Form.Close与Form.Dispose
我是C#的新手,我尝试查看早期的文章,但没有找到一个好的答案。 在具有单个表单的C#Windows表单应用程序中,使用的是Form.Close()更好还是Form.Dispose()? MSDN说,在调用Close时,对象中的所有资源都是关闭的,并且该表单也被处置。尽管有这些,但我在网上还是遇到了多个示例,这些示例遵循的是Dispose而不是Close。 一个人比另一个人有优势吗?在哪种情况下,我们应该优先选择另一种?
88 c#  winforms 


8
您应该如何诊断错误SEHException-外部组件引发了异常
每当用户报告错误时,例如 System.Runtime.InteropServices.SEHException-外部组件引发了异常? 作为程序员,我有什么能确定原因的? 场景:一个用户(使用我公司编写的程序)报告了此错误。这可能是也可能不是一次错误。他们提到,在过去的一个月中,计算机两次“停止工作”。我从经验中学到了,不要从字面上理解此描述,因为这通常意味着与计算机有关的某人未按预期工作。他们无法向我提供更多详细信息,并且我找不到任何记录的错误。因此,可能是也可能不是这个错误。 从堆栈跟踪来看,实际的错误是在构造一个类时,该类不直接调用任何互操作代码,但可能由于该对象可能是数据绑定到DevExpress网格的列表的一部分而变得复杂。 该错误是由未处理的异常例程“捕获”的,该例程通常将关闭程序,但可以忽略并继续。如果他们选择忽略该错误,则程序将继续工作,但在下次运行该例程时会再次发生该错误。但是,在关闭并重新启动我们的应用程序之后,它不再发生。 有关计算机似乎并没有受到压力。它运行的是Vista Business,具有2GB的内存,而根据Task Manager的估计,我们的应用程序仅使用了一半的内存,仅为200Mb。 还有另一条可能不相关的信息。同一程序的另一部分使用第三方组件,该组件实际上是本机dll周围的dotnet包装器,并且该组件确实存在一个已知问题,在这种情况下,您偶尔会遇到 尝试读取或写入受保护的内存。这通常表明其他内存已损坏 组件制造商表示,此问题已在我们内部使用的组件的最新版本中修复,但尚未提供给客户。 鉴于错误的后果很低(不会丢失任何工作,并且无需重新启动程序,最多只需花费一分钟即可恢复到原来的状态),并且考虑到客户很快就会获得新版本(更新的第三版派对组件),我显然可以用手指指望,并且不会再次发生该错误。 但是我还能做些什么吗?

8
Winforms TableLayoutPanel以编程方式添加行
我已经为此进行了一段时间的战斗,并且发现许多其他人也为TableLayoutPanel(.net 2.0 Winforms)感到困扰。 问题 我正在尝试采用“空白” tablelayoutpanel,其中定义了10列,然后在运行时以编程方式添加控件行(即,每个单元格一个控件)。 可能有人认为它应该像 myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */); 但这(对我而言)不会添加行。所以也许添加一行样式 myTableLayoutPanel.RowStyles.Clear(); myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F)); 但这也不起作用。我进行了挖掘,发现myTableLayoutPanel.RowCount用法从设计时间到运行时间都发生了变化,因此myTableLayoutPanel.RowCount++;实际上并没有添加另一行,甚至没有为它添加RowStyle条目之前/之后! 我遇到的另一个相关问题是控件将被添加到显示中,但是它们都只是在TableLayoutPanel的点0,0处呈现,此外,它们甚至不被限制在它们应该被视为的Cell范围内显示在其中(即Dock = DockStyle.Fill,它们仍然显得太大/太小)。 有人在运行时添加行和控件的工作示例吗?

11
在Windows应用程序中显示控制台?
有没有办法在Windows应用程序中显示控制台? 我想做这样的事情: static class Program { [STAThread] static void Main(string[] args) { bool consoleMode = Boolean.Parse(args[0]); if (consoleMode) { Console.WriteLine("consolemode started"); // ... } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
85 c#  winforms  console 

9
Console.WriteLine不会显示在“输出”窗口中
我已经进行了一些Console.WriteLine呼叫测试,但是它们没有出现在输出框中? public static ArrayList myDeliveries = new ArrayList(); public mainForm(){ InitializeComponent(); } private void mainForm_Load(object sender, EventArgs e){ if (!File.Exists("../../MealDeliveries.txt")){ MessageBox.Show("File not found!"); return; } using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){ //first line is delivery name string strDeliveryName = sr.ReadLine(); Console.WriteLine("Test content"); while (strDeliveryName != null){ //other lines Delivery d …
85 c#  .net  winforms 

4
如何制作可捕获WinForms应用程序中所有“未处理”异常的东西?
到目前为止,我只是Application.Run在Program.cs该程序的入口点周围放置了一个try / catch块。这样可以在调试模式下很好地捕获所有异常,但是当我在没有调试模式的情况下运行程序时,不再处理异常。我得到了未处理的异常框。 我不希望这种情况发生。我希望在非调试模式下运行时捕获所有异常。该程序有多个线程,最好所有线程中的所有异常都由同一处理程序捕获;我想在数据库中记录异常。有人对如何执行此操作有任何建议吗?

7
WPF应用程序相对于Winform商业应用程序的优势?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我知道asp.net和winform开发。我不是那种仅仅因为新技术而跳入新技术的开发人员。它需要给我额外的好处,例如更高的生产率。 对于纯业务应用程序,WPF与Winforms相比有什么优势?我对WPF提供的额外的视觉效果,动画,渐变,图像显示效果等不感兴趣。商业应用程序用于数据输入,数据报告以及一些图表和照片的静态显示。 WPF将如何在这些应用程序中提供帮助?更好的更丰富的数据绑定?WinForm是一项经过验证的成熟技术,我喜欢这样的事实:我可以在Visual Studio中完成所有工作,而在WPF(VS和Blend系列)中可以使用多个IDE。另外,我认为WPF没有像Winform对应控件(DataGridView..etc)那样丰富的数据绑定控件。AFAIK,微软将继续支持Winforms多年。 尝试说服像我这样的人改行。
84 wpf  winforms 

4
确定使用了ContextMenuStrip的控件
我有一个ContextMenuStrip分配给几个不同的列表框。我试图弄清楚ContextMenuStrip什么时候单击了什么ListBox。我尝试从下面的代码开始,但无法正常工作。在sender有正确的价值,但是当我尝试它分配到menuSubmitted它为空。 private void MenuViewDetails_Click(object sender, EventArgs e) { ContextMenu menuSubmitted = sender as ContextMenu; if (menuSubmitted != null) { Control sourceControl = menuSubmitted.SourceControl; } } 任何帮助都会很棒。谢谢。 使用以下帮助,我弄清楚了: private void MenuViewDetails_Click(object sender, EventArgs e) { ToolStripMenuItem menuItem = sender as ToolStripMenuItem; if (menuItem != null) { ContextMenuStrip calendarMenu = menuItem.Owner as …


19
将值从一种形式发送到另一种形式
我想在两个窗体(c#)之间传递值。我该怎么做? 我有两种形式:Form1和Form2。 Form1包含一个按钮。当我单击该按钮时,Form2应该打开,而Form1应该处于非活动模式(即,不可选择)。 Form2包含一个文本框和一个提交按钮。当我在Form2的文本框中键入任何消息并单击Submit按钮时,Form2应该关闭,而Form1应该突出显示所提交的值。 我该怎么做?有人可以通过一个简单的例子帮助我做到这一点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.