我应该调用哪个?有必要两者都调用吗?如果我已经调用了其中一个,另一个会抛出异常吗? 最佳答案 Close()和Dispose()在MemoryStream上调用时,仅用于做两件事:将对象标记为已处置,以便将来意外使用该对象时会引发异常。可能1释放对托管对象的引用,这可以使GC的工作更容易一些,具体取决于GC实现。(在今天的GC算法中,它没有真正的区别,所以这是一个学术讨论的观点,对现实世界没有重大影响。)MemoryStream没有任何非托管资源可供处置,因此从技术上讲您不必处置它。不处理MemoryStream的效果与删除对byt
我在这里问的是已经问过(甚至回答过)的问题:WhyaresometextboxesnotacceptingControl+Ashortcuttoselectallbydefault但是这个答案对我不起作用。我有这段代码:publicclassLoginForm:Form{privateTextBoxtbUsername;publicLoginForm(){tbUsername=newTextBox();tbUsername.ShortcutsEnabled=true;tbUsername.Multiline=false;Controls.Add(tbUsername);}}文本框出现,
以下是我们可以退出应用程序的方式:Environment.Exit(0)Application.Exit()Form.Close()这三种方法有什么区别,何时使用每种方法? 最佳答案 正确的方法是Application.Exit()。根据Documentation,它会终止所有消息循环并关闭所有窗口,从而使您的表单有可能执行其清理代码(在Form.OnClose等中)。Environment.Exit只会终止进程。如果某种形式有例如未保存的更改它不会有任何机会询问用户是否要保存它们。此外,资源(数据库连接等)无法正确释放,文件可能无
如果我有以下情况:StreamWriterMySW=null;try{StreamMyStream=newFileStream("asdf.txt");MySW=newStreamWriter(MyStream);MySW.Write("blah");}finally{if(MySW!=null){MySW.Flush();MySW.Close();MySW.Dispose();}}我是否可以只调用MySW.Dispose()并跳过关闭,即使它已提供?是否有任何Streamimplimentations无法按预期工作(如CryptoStream)?如果不是,那么下面就是错误的代码:us
我是C#的新手,我试图查看之前的帖子,但没有找到好的答案。在具有单个窗体的C#Windows窗体应用程序中,使用Form.Close()还是使用Form.Dispose()更好?MSDN表示对象内的所有资源都已关闭,并且在调用Close时会释放表单。尽管如此,我还是在网上遇到了几个遵循Dispose而不是Close的示例。一个人比另一个人有优势吗?在哪些情况下我们应该更喜欢其中一种? 最佳答案 ThisMSDN上的论坛告诉你。Form.Close()sendstheproperWindowsmessagestoshutdownthe
我有以下ListView:我如何将事件附加到每个绑定(bind)的项目,双击该项目时将触发该事件? 最佳答案 从这里找到解决方案:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3d0eaa54-09a9-4c51-8677-8e90577e7bac/XAML:C#:protectedvoidHandleDoubleClick(objectsender,MouseButtonEventArgse){vartrack=((ListViewItem)sender).Con
在MSDN中,我发现CloseReason.UserClosing知道用户已决定关闭表单但我想点击X按钮或点击关闭按钮都是一样的。那么如何在我的代码中区分这两者呢?谢谢大家。 最佳答案 假设您要求使用WinForms,您可以使用FormClosing()event.表单关闭时,事件FormClosing()会被触发。要检测用户是否单击了X或您的CloseButton,您可以通过sender对象获取它。尝试将sender转换为Button控件,并可能验证其名称“CloseButton”,例如。privatevoidForm1_Form
例如,我收到此编译器警告,Theevent'Company.SomeControl.SearchClick'isneverused.但我知道它已被使用,因为将其注释掉会引发20个试图使用此事件的XAML页面的新警告!什么给了?是否有摆脱此警告的技巧? 最佳答案 这似乎是warning67因此可以被抑制:#pragmawarningdisable67不要忘记尽快(在事件声明之后)恢复它:#pragmawarningrestore67但是,我会再次检查并确保您在某处提出事件,而不是只是订阅。当您注释掉该事件时,编译器发出20个警告而不是
我正在尝试在VisualStudio2008中使用Ctrl+R、Ctrl+R命令重命名变量。我在底部收到一条错误消息说"组合键(Ctrl+R,Ctrl+R)绑定(bind)命令(&Rename...)当前不可用。”我没有运行它或我能想到的任何可能禁止修改文件的东西,而F2命令允许重命名。有人知道如何解决这个问题吗?编辑:我确实安装了Resharper,但之前能够使用相同的设置执行此操作,我最近迁移了计算机。 最佳答案 我能够通过执行以下操作来解决此问题:转到Resharper→选项菜单命令选择环境→键盘和菜单选择KeyboardSh
我总是按F6来构建我的项目。突然,我的一些VisualStudio实例要我使用Ctrl-Shift-B。它与键盘无关-菜单选项的实际文本从“F6”变为“Ctrl-Shift-B”。关于如何修复以及是什么原因的任何答案? 最佳答案 也许是键盘映射损坏问题?检查工具/选项、环境/键盘。应该会看到键盘映射方案的下拉菜单,旁边是重置按钮。点击重置按钮。我不对您的设置造成这种影响负责-在执行此操作之前保存它们,以防万一您搞砸了狗。哦,以防万一那里的narcs关心,我认为这是一个有效的问题,如果有人投票关闭它,就会被淘汰。当然,既然我已经这么说