我试图在WPF RichTextBox中绕过TextPointer类.
我希望能够跟踪它们,以便我可以将信息与文本中的区域相关联.
我目前正在使用一个非常简单的例子来试图弄清楚发生了什么.在PreviewKeyDown事件中,我存储插入符号位置,然后在PreviewKeyUp事件中,我根据插入符号位置之前和之后创建TextRange.这是一个代码示例,说明了我要做的事情:
// The caret position before typing
private TextPointer caretBefore = null;
private void rtbTest_PreviewKeyDown(object sender, KeyEventArgs e)
{
// Store caret position
caretBefore = rtbTest.CaretPosition;
}
private void rtbTest_PreviewKeyUp(object sender, KeyEventArgs e)
{
// Get text between before and after caret positions
TextRange tr = new TextRange(caretBefore, rtbTest.CaretPosition);
MessageBox.Show(tr.Text);
}
Run Code Online (Sandbox Code Playgroud)
问题是我得到的文字是空白的.例如,如果我输入字符'a',那么我希望在TextRange中找到文本"a".
有谁知道出了什么问题?这可能是非常简单的事情,但我花了一个下午无处可去.
我试图接受新的WPF技术,但发现特别是RichTextBox非常复杂,甚至使得这样的简单事情变得困难.如果有人有任何链接可以很好地解释TextPointer,如果你能让我知道,我将不胜感激.
我有一个现有的ASP .NET MVC应用程序,我想忽略其中的特定文件夹(我打算放置PHP脚本).
我曾尝试将作为描述的忽略路线在这里,但它不工作,因为我仍然得到标准的ASP.NET配置错误.
例如,假设我有这个文件夹结构:
root+
|
+--bin
|
+--test
Run Code Online (Sandbox Code Playgroud)
根据我的理解,在我的global.asax.cs文件中,我想我应该把它放在RegisterRoutes方法中:
routes.IgnoreRoute("test/{*.pathInfo}");
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢,艾伦
编辑:发布web.config
<configuration>
<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, …Run Code Online (Sandbox Code Playgroud) 我的应用程序是用WPF构建的,但它包含了我们编写的一些WinForms组件.当在其中一个WinForms组件中未处理异常时,它会使应用程序崩溃.
我已经DispatcherUnhandledException为WPF事件实现了.这很好,因为它允许我显示错误并将异常标记为Handled以避免崩溃.
我可以使用非WPF例外做类似的事情.我希望过去的标准WinForms对话框允许用户继续或完全应用程序?
编辑:WinForms异常确实被捕获DispatcherUnhandledException但将e.Handled设置为true并不会阻止应用程序崩溃.
我在项目中使用AvalonDock来利用工具窗口.
当我右键单击工具窗口标题栏时,我不需要选项卡式文档并且想要禁用"Dock as Tabbed Document"上下文菜单项.这可能吗?
谢谢
我有很多C#(Visual Studio 2008)项目,其中一些项目正在更新程序集,即使没有任何更改(即使我选择Build而不是Rebuild).我的大多数项目都不这样做,只是奇怪的几个.
我还没有找到项目之间的任何差异,并想知道是否有人有任何想法可能会影响它.为了清楚起见,我在构建之前没有进行任何代码更改,但是当我在Visual Studio中运行Build命令时仍然正在重新创建程序集.
对不起,我不能提供任何进一步的细节,但请告诉我,如果还有什么我可以检查可能会有所帮助.
有人可以帮忙吗?我已经把头发弄了一会儿.
谢谢,艾伦
我目前在64位Ubuntu机器上安装了64位版本的Qt5,但我也希望能够在同一台机器上进行32位版本.在Windows上,我可以在MaintenanceTool中选择其他套件,但在Linux上这似乎不可能.或者我错过了什么?
我正在使用C#生成一个项目,该项目将使用Word Automation API生成Word文档.
我想在生成的文档中的特定点插入分页符,我目前正在使用以下代码成功执行此操作:
// Generate page break
object pageBreak = WdBreakType.wdPageBreak;
wordApp.Selection.InsertBreak(ref pageBreak);
Run Code Online (Sandbox Code Playgroud)
但是,如果在上一页的空间用完之后文档仍然自然地包裹在下一页上,那么我真的不想生成分页符,否则我最终会得到一个空白页面.
我真正想要的是能够找到光标的确切位置,如果它位于当前页面的第一行和第一列,那么我可以安全地假设没有必要插入分页符.
有没有办法访问光标的位置?或者另一种可以做同样事情的解决方案?这似乎是一个简单的要求,所以如果我错过了显而易见的事情,我会事先道歉.
我有一个MSBuild脚本,除了我的后期构建步骤之外,还要做我需要做的所有事情(请参阅我之前提出的问题:MSBuild条件Exec?).
我正在寻找的是构建许多csproj文件,并且当且仅当项目构建时,可选择执行构建后步骤.我不想一直执行我的后期构建步骤,否则我的最终输出上的时间戳将被不必要地修改(并且它使得构建过程非常耗时而无缘无故).
在我的MSBuild脚本中,我为每个csproj文件提供了以下内容:
<Target Name="ProjectName">
<MSBuild Projects="PathToProject" Properties="Configuration=$(buildtype)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
编辑: 我认为我真正想做的是检测CoreCompile任务何时为每个项目运行.如果在某种情况下有某种方法来检查这个问题?
有任何想法吗?
我是MSBuild的新手,所以也许我完全走错了轨道!
谢谢,艾伦
当我的应用程序运行并且系统从休眠状态恢复时(在Windows 7中),我遇到了一个奇怪的问题.
我正在调用Graphics.DrawString方法,这在大多数情况下工作正常.除了程序运行并且我休眠系统.然后,当我恢复,拉绳方法引发ArgumentException(参数无效),并给了我一个红色的叉在我的绘画应该是.
这里出了什么问题?捕获异常避免了红叉,但是当我们进入这种状态是没有办法回来,除了将继续抛出的程序重新启动为止.
感谢您的帮助,艾伦
编辑:这是失败的代码:
protected override void OnPaint(PaintEventArgs e)
{
// Drawing logic succeeds until this point
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y));
}
Run Code Online (Sandbox Code Playgroud)
这实际上是ToolStripLabel的子类.
一点背景.我希望能够在WPF RichTextBox中处理插入符号所在行的文本.请参阅我之前关于TextPointer类的问题:如何在WPF RichTextBox中跟踪TextPointer?.
我知道如何通过使用GetLineStartPosition并将0作为参数来获取当前行开头的TextPointer,但现在想要在行的末尾获取TextPointer.在我之前的问题中建议使用GetLineStartPosition方法.
如果有人可以解释一下GetLineStartPosition如何处理行结束指针,我将不胜感激.
在此先感谢您的帮助.
c# ×8
wpf ×4
csproj ×2
exception ×2
richtextbox ×2
winforms ×2
.net ×1
32bit-64bit ×1
asp.net-mvc ×1
automation ×1
avalondock ×1
break ×1
build ×1
contextmenu ×1
dock ×1
drawing ×1
gcc ×1
ms-word ×1
msbuild ×1
post-build ×1
projects ×1
qt ×1
qt5 ×1
routing ×1
ubuntu ×1