问题列表 - 第30991页

在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万
查看次数

Subversion选项显示更新结果而不实际更新

perforce命令:

p4 sync -n

将显示同步的结果(在subversion中更新)而不实际执行同步.

我一直在查看svn帮助页面并在goversion中搜索subversion中的标记/命令,它们将执行相同但尚未找到的标记/命令.我当时认为可能有svn更新的标签可以实现这一目标.有吗?

svn perforce sync

8
推荐指数
1
解决办法
1388
查看次数

具有匿名委托的Dispatcher.Invoke适用于Silverlight但不适用于WPF

在Silverlight 4中,我有一个自定义服务类,它有一个异步的Completed事件.在Completed事件中,我获取返回的数据并通过以下方式调用populate方法:

private void service_Completed(object sender, CompletedEventArgs args)
{
    Dispatcher.BeginInvoke(() => populateInbox(args.Jobs));
}

private void populateInbox(List<JobViewModel> jobs)
{
    inbox.DataContext = jobs;
}
Run Code Online (Sandbox Code Playgroud)

BeginInvokeSL4中的工作,但是当我将它移植到WPF时,我收到以下错误:

无法将lambda表达式转换为类型'System.Delegate',因为它不是委托类型

我尝试将其更改为一个内联的,匿名的,参数化的代表:

Dispatcher.BeginInvoke(delegate(List<JobViewModel> jobs)
{
    inbox.DataContext = jobs;
});
Run Code Online (Sandbox Code Playgroud)

但是,这会产生相同的编译时错误.

知道如何在WPF中使用它吗?重构使用BackgroundWorker它不是我的选择.

c# wpf asynchronous begininvoke anonymous-delegates

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

像桌子一样显示DL

如何设置定义列表项的样式以使每个定义在一行中?

HTML:

<dl>
    <dt>word</dt><dd>meaning</dd>
    <dt>word</dt><dd>meaning</dd>
    <dt>word</dt><dd>meaning</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)

我需要的视觉渲染:

*word* meaning
*word* meaning
*word* meaning
Run Code Online (Sandbox Code Playgroud)

css cross-browser

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

R中的粗糙集

你知道任何R包实现基于粗糙集的方法吗?我相信答案是没有,但也许我错过了一些微妙的东西.

r

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

如何在C++中删除非空目录?

在C++中,如何删除包含所有包含文件的目录?我知道有rmdir,但它只会删除非空目录,所以我如何首先列出并删除所有包含的文件?

我知道使用Boost Filesystem应该不会很难,但我有点想避免构建并依赖它来完成这个小任务......

c++ file-io file

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

AJAX通过邮寄整个表格提交

我试图简单地发布一个完整的表单,而不需要像在get调用中那样创建url.我出于某种原因看到的所有教程都创建了一个参数URL并通过发送功能发送它.我希望能够通过表单ID或表单名称发送表单,这可能吗?原因是因为我会有一些提交,可以有2到1000个用户可以按的复选框(不是我的选择).我看的例子主要是:http://www.captain.at/howto-ajax-form-post-request.php

我使用type ="button"来提交而不是onchange或类似的东西.

html forms ajax post button

3
推荐指数
1
解决办法
2054
查看次数

禁用用户在特定大小后调整表单大小

我想让用户调整我的表单大小,但当他们达到特定大小时,禁用此功能使其窗口比我想要的小.

有什么建议?

winforms c#-4.0

1
推荐指数
1
解决办法
1324
查看次数

Android Eclipse模拟器上的相机:

我的笔记本盖子上没有嵌入式相机.我将通过外置USB摄像头连接.

模拟器运行时可以正确选择它吗?我会实时显示AVD皮肤屏幕内的图像吗?

android android-emulator android-camera

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

编写Intelli-J检查?

我将如何编写自己的Intelli-J检查?我正在寻找一些一般的指南或资源.

我想在每次手动实例化集合类时提出检查提示,而不是List.newArrayList()/Maps.newHashMap()按照团队范围的标准通过Guava()等.

我很欣赏任何方向.

intellij-idea code-hinting inspections

5
推荐指数
1
解决办法
1122
查看次数