草庐IT

c# - 如何使 DockPanel 中的项目扩展以适应 WPF 中的所有可用空间?

我有一个StackPanel包含一个StackPanel和一些其他项目。第一个StackPanel是垂直方向,里面的是水平方向。内部有一个TreeView和一个ListView,我希望它们展开并适合窗口的宽度,我由窗口设置并允许用户更改.我还希望外部StackPanel适合窗口的高度。我该怎么做?编辑:我已经转换为使用DockPanel,并在每个元素中正确设置了DockPanel.Dock属性,并禁用了LastChildFill在两个停靠面板中,布局仍然没有拉伸(stretch)。代码: 最佳答案 改用DockPanel。Stack

c# - C# 中是否存在可使局部变量在多次调用中保持不变的关键字?

也就是说,在C中,我们可以定义如下函数:func(){staticintfoo=1;foo++;returnfoo;}每次调用它都会返回一个更大的数字。C#中是否有等效的关键字? 最佳答案 不,C#中没有这样的东西。您希望在多个方法调用中保持的所有状态都必须在字段中,无论是实例还是静态。除非...如果您在lambda表达式或类似的表达式中捕获变量。例如:publicFuncGetCounter(){intcount=0;return()=>count++;}现在您可以使用:Funccounter=GetCounter();Conso

c# - 如何在应用程序中使表单始终位于最前面

我有一个表单,我希望它在应用程序中打开时始终位于顶部,但我不希望它在主表单最小化或导航另一个应用程序时位于顶部。我希望它仅在我的应用程序中位于顶部。按照问题的答案:Howtomakeawindowalwaysstayontopin.Net?this.TopMost=true;使表单位于顶部,但当导航到另一个应用程序或关闭主表单时,表单仍位于顶部。请问如何使表单仅位于应用程序的顶部,同时使用户仍然可以在主表单上工作? 最佳答案 您正在寻找一个拥有的窗口。它始终位于所有者之上,并与所有者一起最小化。拥有窗口的好例子是VisualStud

c# - 如何使 GetFiles() 排除扩展名以搜索扩展名开头的文件?

我正在使用以下行返回特定文件...FileInfofileinnodeDirInfo.GetFiles("*.sbs",option)但目录中还有扩展名为.sbsar的其他文件,它也在获取它们。如何区分搜索模式中的.sbs和.sbsar? 最佳答案 您遇到的问题是limitation搜索模式,在Win32API中。AsearchPatternwithafileextension(forexample*.txt)ofexactlythreecharactersreturnsfileshavinganextensionofthreeor

c# - 使控制台应用程序的行为类似于 Windows 应用程序

我有一个控制台应用程序,我希望它等到引发某个事件。但它执行代码并退出:staticvoidMain(string[]args){varsomeObjectInstance=newSomeObject();someObjectInstance.SomeEvent+=SomeEventHandler;}staticvoidSomeEventHandler(){//Somelogic}我想让我的应用程序像Windows应用程序一样运行Application.Run(newForm1());被调用并运行消息循环。但我既不需要消息循环也不需要任何形式。所以它看起来像头顶。有没有更轻量级的方法来实

c# - 如何使程序不显示在 Alt-Tab 或任务栏中

我有一个程序需要在后台运行,当用户连接到RDPsession时,它会进行一些环境设置,然后启动一个程序。当程序关闭时,它会做一些内务处理并注销session。我目前的做法是让终端服务器启动这个应用程序。这是作为Windows窗体应用程序构建的,以防止控制台窗口显示:publicstaticvoidMain(){//(Snip...)DosomesetupworkProcessproc=newProcess();//(Snip...)Setuptheprocessproc.Start();proc.WaitForExit();//(Snip...)DosomehousecleaningN

C# - 如何使方法仅对继承方法基类的类可见

我有一个标记为抽象的基类。是否可以使该基类中的方法仅对继承该基类的其他类可见?假设我有Class1,它是我的基类,被标记为抽象类。Class2继承了Class1并且可以调用它的所有公共(public)方法。我希望Class3创建Class2的实例,但不能调用Class1的某些方法。我尝试将这些方法本身标记为抽象方法,但当Class2尝试使用它们时出现错误。错误是:“...无法声明正文,因为它被标记为抽象” 最佳答案 为什么不声明方法protected?publicabstractclassClass1{protectedabstra

c# - 如何轻松使这个计数器属性线程安全?

我在只有计数器的类中有属性定义,这必须是线程安全的,这不是因为get和set不在同一个锁中,如何做到这一点?privateint_DoneCounter;publicintDoneCounter{get{return_DoneCounter;}set{lock(sync){_DoneCounter=value;}}} 最佳答案 如果您希望以保证DoneCounter=DoneCounter+1不受竞争条件影响的方式实现属性,则不能在属性的实现中完成。该操作不是原子操作,它实际上是三个不同的步骤:检索DoneCounter的值。加1将

C# 泛型 - 通过使包装类泛型获得什么?

考虑这个泛型类:publicclassRequestwhereTOperation:IOperation{privateTOperation_operation{get;set;}publicstringMethod{get{return_operation.Method;}}publicRequest(TOperationoperation){_operation=operation;}}与下面的非通用版本相比,上面的通用版本有什么真正的好处?publicclassRequest{privateIOperation_operation{get;set;}publicstringMet

c# - 为什么 FakeItEasy 抛出这个异常,为什么使方法成为虚拟方法来修复它?

我有一个测试(代码在下面)来测试Method1调用Method2。我得到的异常是Thecurrentproxygeneratorcannotinterceptthespecifiedmethodforthefollowingreason:-Sealedmethodscannotbeintercepted.被测方法本身并未密封。但是,它确实依赖密封类(第三方类,我无法为其创建包装器以正确模拟它-另一个问题的另一个主题)。无论哪种方式,此时我都没有要求FakeItEasy模拟密封类。在调试我的测试时,当调用依赖项时,我可以清楚地看到正在生成一个真实的对象,而不是假的。然而,鉴于错误消息,我