小编Met*_*ose的帖子

“CS8700:多个分析器配置文件不能位于同一目录中”,但只有一个 StyleCop 文件

我正在尝试学习在个人项目中使用 StyleCop。这不是一个很大的解决方案结构如下:

- MySolution (2 of 2 projects)
   - Solution Items
      - .editorconfig
      - .gitignore
      - CODEOWNERS
      - my-pipeline-workflow.yml
      - README.md
      - stylecop.json
   - MyMainProject
      - Dependencies
      - .editorconfig (pointer Solution Items copy)
      - OneOfManyCsFiles.cs
      - stylecop.json (pointer Solution Items copy)
   - MyTestProject
      - Dependencies
      - .editorconfig (pointer Solution Items copy)
      - OneOfManyTestCsFiles.cs
      - stylecop.json (pointer Solution Items copy)
Run Code Online (Sandbox Code Playgroud)

以下是文件夹本身的结构:

- RepoFolder
   - .github
      - workflows
         - my-pipeline-workflow.yml
   - src
      - MyMainProject.csproj
      - OneOfManyCsFiles.cs
   - test
      - MyTestProject.csproj
      - OneOfManyTestCsFiles.cs …
Run Code Online (Sandbox Code Playgroud)

c# configuration stylecop build analyzer

21
推荐指数
2
解决办法
4267
查看次数

在WPF窗口中嵌入控制台窗口

是否可以在WPF窗口中嵌入控制台窗口?

作为一个小背景,起初,我试图在WPF中从头开始实现一个控制台窗口,除了一个巨大的问题之外它是成功的 - 它非常慢.请参阅此处的问题:
Windows WPF或Silverlight中的VT100终端仿真

由于这似乎不是一个选项,我反而考虑在我的WPF应用程序中托管一个实际的控制台窗口,我已经学会了如下所述:

WPF应用程序没有输出到控制台?

这很好,但理想情况下,我希望控制台窗口看起来像是WPF应用程序其余部分的一部分.我知道有可能使用WinForms应用程序,因为我已经看到它完成,涉及使用SetParent Win32 API.您可以看到一个示例.NET项目,该项目使用此CommandBar项目将控制台窗口嵌入到shell中:

http://www.codeproject.com/KB/cs/commandbar.aspx

所以我希望它也可以用WPF完成,但我不知道你是怎么做到的.非常感谢帮助(同样,如果您对我在WPF中从头开始创建终端窗口的原始问题有任何出色的解决方案,因为这也将解决我的需求).

更新:

在Reed Copsey的帮助下,我能够嵌入控制台窗口.但是,当然它需要进行样式化和移动,否则它看起来就像WPF窗口中的常规控制台窗口.我需要标题栏和大边框删除.做研究我想出了如何使用Win32 API这样做:

uint style = GetWindowLong(ConsoleManager.ConsoleWindowHandle, GWL_STYLE);
style &= ~(uint)WindowStyles.WS_CAPTION;
style &= ~(uint)WindowStyles.WS_THICKFRAME;
style &= ~(uint)WindowStyles.WS_DLGFRAME;
style &= ~(uint)WindowStyles.WS_POPUP;
SetWindowLong(ConsoleManager.ConsoleWindowHandle, GWL_STYLE, style);
MoveWindow(ConsoleManager.ConsoleWindowHandle, 0, 0, (int)WindowsFormsHost.ActualWidth, (int)WindowsFormsHost.ActualHeight, true);
Run Code Online (Sandbox Code Playgroud)

但是,有一个大问题.出于某种原因,控制台窗口具有渲染工件.就好像它不会在左下角和右上角重新粉刷一样.工件的宽度类似于标题栏的宽度和粗边框,事实上,如果我留下工件大小的粗边框下降.但只是重新绘制它将无济于事,因为它再次出现.例如,我可以将窗口从屏幕上移开并再次返回以修复它,但它很快就会重新出现:

渲染神器http://img837.imageshack.us/img837/6241/renderissue.png

更新2:即使我不将它父进入WindowsFormsHost控件,效果也会发生.我需要做的就是重现它是启动控制台(使用AllocConsole())然后用SetWindowLong删除它的标题栏.这是一台win7机器.

更新3:似乎"弄乱"其他类似的窗口不受支持.假设有一个标题,控制台窗口计算其textarea,所以没有办法解决这个问题.我认为我在WPF中获得类似控制台的行为的唯一选择是编写自定义WinForms控件然后将其嵌入到WPF中.

.net wpf console console-application

12
推荐指数
2
解决办法
1万
查看次数