用于WPF的Telerik UI免费下载30天试用版

文本编辑

直到现在,价值RadTimeSpanPicker可以通过其下拉组件编辑内容。与R3 2020我们的WPF套件的Telerik UI版本,现在您将能够直接编辑控件的值。本主题将引导您了解此功能。

编辑模式

控件的编辑模式由编辑模式财产。它的默认值是TextAndDropDown。这意味着您将能够通过直接在输入文本框中输入值来编辑TimeSpan,或者从下拉框中选择一个时间。

编辑模式属性是一个枚举,它包含以下值:

  • 没有一个:用户将无法编辑控件的值。
  • TextOnly:用户将被限制通过控件内的文本编辑值。下拉按钮将折叠。的FormatString属性将确定编辑的部分。
  • 下拉:用户将被限制通过下拉按钮内的TimeSpanComponents编辑值。
  • TextAndDropDown:用户将能够直接编辑通过文本框和TimeSpanComponents内的下拉按钮。

TimeSpanText (TimeSpanPicker中的可见文本)的格式取决于EditMode和StringFormat属性:

  • EditMode为TextOnly或TextAndDropDown: TimeSpanТеxt使用StringFormat格式化,其主要区别是即使在格式字符串中有可选日期的场景中,日期也是可见的。这是为了更好的文本编辑可用性。
  • EditMode为None或DropDownTimeSpanText按照预期使用StringFormat属性进行格式化。如果StringFormat设置为空字符串或null,则使用'g'字符串格式作为默认格式。

旋转模式

的自旋行为RadTimeSpanPicker控件可以通过设置SpinMode财产。

里面不同部分的值RadTimeSpanPicker文本框可以通过键盘。上/下关键字MouseWheel按钮。

SpinMode属性是公开以下值的枚举:

  • 没有一个:禁用自旋行为

  • CurrentSectionOnly:当旋转当前部分时,其他部分的值将永远不会改变。例如,如果您将分钟旋转到59,再旋转一次将把分钟设置为0,但不会改变小时部分。

  • AllSections:当旋转一个部分时,将从TimeSpan值中添加/删除一个值。这将导致其他部分的变化比当前旋转的部分更大。如果达到截面的最大值(或最小值),则增加较大的截面(或通过单步减少)。

您可以在下面找到不同部分的默认旋转步骤。

  • : 1
  • 小时: 1
  • 分钟: 10
  • : 10
  • Millisecods: 100

在自旋操作中不使用PageUp(Home)和PageDown(End)按钮。当按下PageUp/PageDown按钮时,将选择第一/最后一节。

ValueEditing事件

文本编辑控件的功能,一个新的事件被引入。的ValueEditing事件时调用价值的性质RadTimeSpanPicker即将通过文本框或下拉弹出框更改编辑操作,从而允许您进一步自定义控件的编辑过程。下面我们将介绍基本场景,演示如何利用此事件。

传递的事件参数的类型为ValueEditingEventArgs并公开以下属性:

  • 取消:获取或设置一个值,该值指示是否应用控件的新值。
  • SectionType:获取编辑节类型。
  • DigitChar:如果编辑是按数字键的结果,则获取数字字符。
  • IsDelete:获取一个值,该值指示编辑是否是删除操作的结果。
  • NewValue获取或设置新系统。时间间隔值。
  • CurrentValue:获取当前系统。控件的时间跨度值。
  • SpinAction获取一个值,该值指示这是否是旋转操作及其类型。

增加或减少一个部分的旋转步长

如果希望在执行旋转操作时以特定的间隔增加或减少TimeSpan部分,则可以创建自定义代码来指定每个部分的步骤。在ValueEditing事件的事件处理程序中,我们可以检查当前部分并修改我们需要的步骤。示例1演示了我们如何改变旋转步骤的天(5天)和小时(2小时)。

示例1:自定义旋转步骤

private void RadTimeSpanPicker_ValueEditing(对象发送方,ValueEditingEventArgs e) {if (e.o nvalue . hasvalue) {if (e.o nspinaction != SpinAction. none) {int spinStepMultiplier = (e.o nspinaction == SpinAction. none)。KeyUp || e.s spinaction == SpinAction.MouseWheelUp) ?1: -1;switch (e.SectionType) {case EditSectionType。小时: e.NewValue = ((TimeSpan)e.CurrentValue).Add((double)TimeSpan.FromHours(5 * spinStepMultiplier)); break; case EditSectionType.Days: e.NewValue = ((TimeSpan)e.CurrentValue).Add((double)TimeSpan.FromDays(2 * spinStepMultiplier)); break; default: return; } } } }

设置最小和最大时间跨度值

要设置最小和最大TimeSpan,我们可以使用自定义代码来实现。在ValueEditing事件处理程序,我们可以使用来自事件参数的NewValue属性来检查值是否在特定的TimeSpan范围内。示例2展示了我们如何实现这一目标。

例2:设置最小和最大时间跨度

private void RadTimeSpanPicker_ValueEditing(对象发送方,ValueEditingEventArgs e) {if (e.NewValue. hasvalue) {e.NewValue = this.CoerceTimeSpanValue(e.NewValue. value);}} private TimeSpan CoerceTimeSpanValue(TimeSpan newTimeSpan) {TimeSpan minValue = newTimeSpan (2,15,20,20,100);TimeSpan maxValue = new TimeSpan(20,25,30,35,500);if (newTimeSpan > maxValue){返回maxValue;}如果(newTimeSpan < minValue){返回minValue;}返回newTimeSpan;}

粘贴新的TimeSpan值

当用户选择TextBox中的所有文本然后进行粘贴时,如果将粘贴的文本解析为时间跨度(使用标准格式字符串“c”,“g”,“g”和当前格式字符串属性进行解析),将调用ValueEditing事件。如果在事件处理程序中未取消,则将其设置为控件的新值。

选项卡导航

RadTimeSpanPicker控件提供了一种简单的方法,可以在其TimeSpan部分之间导航选项卡关键。控件控制内置的Tab导航TabNavigationMode财产。的TabNavigationMode属性是公开以下值的枚举:

TabNavigationModes Once和Cycle需要将EditMode属性设置为TextOnly / TextAndDropDown

  • 一次:按tab键可以逐个浏览编辑部分。焦点将在最后一个TimeSpanPicker部分之后离开控制。
  • 周期:按tab键可以逐个浏览编辑过的部分。焦点将在编辑的TimeSpanPicker部分之间循环。在最后一节之后,焦点不会离开控制。
  • 没有一个:按Tab键不能使焦点从一个区域移动到另一个区域。

另请参阅

在本文中
Baidu
map