找回密码
 立即注册

QQ登录

只需一步,快速开始

sfchina1977

注册会员

4

主题

22

帖子

124

积分

注册会员

积分
124

活字格认证

sfchina1977
注册会员   /  发表于:2011-8-11 16:08  /   查看:12371  /  回复:15
Sprea中有4列。其中B列,D列为下拉列表类型。在A列中输入值后,按下回车,会叫焦点转移到B列,同时会设置B列的值。
焦点进入单元格,会切换到编辑状态。

BUG再现操作:
在A列输入1,按下回车,制动设定B列的值,并且焦点转移到B列。再次按下回车,焦点转移到C列,在C列中输入3,按下回车~出现了异常。

15 个回复

倒序浏览
sfchina1977
注册会员   /  发表于:2011-8-11 16:11:00
沙发
上传不了测试例子,只好一个一个代码沾上来了~~
Form1.Designer.vb
----------------------------------------------
  1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
  2. Partial Class Form1
  3.     Inherits System.Windows.Forms.Form

  4.     'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
  5.     <System.Diagnostics.DebuggerNonUserCode()> _
  6.     Protected Overrides Sub Dispose(ByVal disposing As Boolean)
  7.         Try
  8.             If disposing AndAlso components IsNot Nothing Then
  9.                 components.Dispose()
  10.             End If
  11.         Finally
  12.             MyBase.Dispose(disposing)
  13.         End Try
  14.     End Sub

  15.     'Windows フォーム デザイナで必要です。
  16.     Private components As System.ComponentModel.IContainer

  17.     'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
  18.     'Windows フォーム デザイナを使用して変更できます。  
  19.     'コード エディタを使って変更しないでください。
  20.     <System.Diagnostics.DebuggerStepThrough()> _
  21.     Private Sub InitializeComponent()
  22.         Dim ComboBoxCellType1 As FarPoint.Win.Spread.CellType.ComboBoxCellType = New FarPoint.Win.Spread.CellType.ComboBoxCellType
  23.         Dim ComboBoxCellType2 As FarPoint.Win.Spread.CellType.ComboBoxCellType = New FarPoint.Win.Spread.CellType.ComboBoxCellType
  24.         Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread
  25.         Me.FpSpread1_Sheet1 = New FarPoint.Win.Spread.SheetView
  26.         Me.Button1 = New System.Windows.Forms.Button
  27.         Me.Button2 = New System.Windows.Forms.Button
  28.         CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).BeginInit()
  29.         CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit()
  30.         Me.SuspendLayout()
  31.         '
  32.         'FpSpread1
  33.         '
  34.         Me.FpSpread1.AccessibleDescription = "FpSpread1, Sheet1, Row 0, Column 0, "
  35.         Me.FpSpread1.Location = New System.Drawing.Point(47, 12)
  36.         Me.FpSpread1.Name = "FpSpread1"
  37.         Me.FpSpread1.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.FpSpread1_Sheet1})
  38.         Me.FpSpread1.Size = New System.Drawing.Size(529, 228)
  39.         Me.FpSpread1.TabIndex = 0
  40.         '
  41.         'FpSpread1_Sheet1
  42.         '
  43.         Me.FpSpread1_Sheet1.Reset()
  44.         Me.FpSpread1_Sheet1.SheetName = "Sheet1"
  45.         'Formulas and custom names must be loaded with R1C1 reference style
  46.         Me.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1
  47.         ComboBoxCellType1.ButtonAlign = FarPoint.Win.ButtonAlign.Right
  48.         ComboBoxCellType1.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.Index
  49.         ComboBoxCellType1.Items = New String() {"", "B1", "B2"}
  50.         Me.FpSpread1_Sheet1.Columns.Get(1).CellType = ComboBoxCellType1
  51.         ComboBoxCellType2.ButtonAlign = FarPoint.Win.ButtonAlign.Right
  52.         ComboBoxCellType2.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.Index
  53.         ComboBoxCellType2.Items = New String() {"", "A1", "A2", "A3", "A4"}
  54.         Me.FpSpread1_Sheet1.Columns.Get(3).CellType = ComboBoxCellType2
  55.         Me.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = False
  56.         Me.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1
  57.         '
  58.         'Button1
  59.         '
  60.         Me.Button1.Location = New System.Drawing.Point(47, 260)
  61.         Me.Button1.Name = "Button1"
  62.         Me.Button1.Size = New System.Drawing.Size(75, 23)
  63.         Me.Button1.TabIndex = 1
  64.         Me.Button1.Text = "Button1"
  65.         Me.Button1.UseVisualStyleBackColor = True
  66.         '
  67.         'Button2
  68.         '
  69.         Me.Button2.Location = New System.Drawing.Point(138, 260)
  70.         Me.Button2.Name = "Button2"
  71.         Me.Button2.Size = New System.Drawing.Size(75, 23)
  72.         Me.Button2.TabIndex = 2
  73.         Me.Button2.Text = "Button2"
  74.         Me.Button2.UseVisualStyleBackColor = True
  75.         '
  76.         'Form1
  77.         '
  78.         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
  79.         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
  80.         Me.ClientSize = New System.Drawing.Size(859, 500)
  81.         Me.Controls.Add(Me.Button2)
  82.         Me.Controls.Add(Me.Button1)
  83.         Me.Controls.Add(Me.FpSpread1)
  84.         Me.Name = "Form1"
  85.         Me.Text = "Form1"
  86.         CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).EndInit()
  87.         CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).EndInit()
  88.         Me.ResumeLayout(False)

  89.     End Sub
  90.     Friend WithEvents FpSpread1 As FarPoint.Win.Spread.FpSpread
  91.     Friend WithEvents FpSpread1_Sheet1 As FarPoint.Win.Spread.SheetView
  92.     Friend WithEvents Button1 As System.Windows.Forms.Button
  93.     Friend WithEvents Button2 As System.Windows.Forms.Button

  94. End Class
复制代码
回复 使用道具 举报
sfchina1977
注册会员   /  发表于:2011-8-11 16:11:00
板凳
Form1.vb
-------------------------
  1. Imports FarPoint.Win.Spread
  2. Imports FarPoint.Win.Spread.CellType
  3. Public Class Form1
  4.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5.         FpSpread1_Sheet1.ColumnCount = 6
  6.         SetSpreadInputMap()
  7.         SetListBox()
  8.     End Sub
  9.     Private Sub SetSpreadInputMap()
  10.         Dim oMap As InputMap
  11.         oMap = FpSpread1.GetInputMap(InputMapMode.WhenFocused)
  12.         oMap.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap)
  13.         oMap.Put(New Keystroke(Keys.Enter, Keys.Shift), SpreadActions.MoveToPreviousColumnWrap)
  14.         oMap = FpSpread1.GetInputMap(InputMapMode.WhenAncestorOfFocused)
  15.         oMap.Put(New Keystroke(Keys.F2, Keys.None), SpreadActions.None)
  16.         oMap.Put(New Keystroke(Keys.F3, Keys.None), SpreadActions.None)
  17.         oMap.Put(New Keystroke(Keys.F4, Keys.None), SpreadActions.None)
  18.         oMap.Put(New Keystroke(Keys.Tab, Keys.None), SpreadActions.None)
  19.         oMap.Put(New Keystroke(Keys.Tab, Keys.Shift), SpreadActions.None)
  20.         oMap.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap)
  21.         oMap.Put(New Keystroke(Keys.Enter, Keys.Shift), SpreadActions.MoveToPreviousColumnWrap)
  22.         oMap.Put(New Keystroke(Keys.Left, Keys.None), SpreadActions.MoveToPreviousColumnWrap)
  23.         oMap.Put(New Keystroke(Keys.Right, Keys.None), SpreadActions.MoveToNextColumnWrap)
  24.     End Sub
  25.     Private Sub SetListBox()
  26.         Dim oListBox1 As New ListBox()
  27.         oListBox1.Items.Add(&quot;&quot;)
  28.         oListBox1.Items.Add(&quot;B1&quot;)
  29.         oListBox1.Items.Add(&quot;B2&quot;)
  30.         Dim oListBox3 As New ListBox()
  31.         oListBox3.Items.Add(&quot;&quot;)
  32.         oListBox3.Items.Add(&quot;A1&quot;)
  33.         oListBox3.Items.Add(&quot;A2&quot;)
  34.         oListBox3.Items.Add(&quot;A3&quot;)
  35.         oListBox3.Items.Add(&quot;A4&quot;)
  36.         Dim ct1 As ComboBoxCellType = CType(FpSpread1.Sheets(0).Columns(1).CellType, ComboBoxCellType)
  37.         Dim ct3 As ComboBoxCellType = CType(FpSpread1.Sheets(0).Columns(3).CellType, ComboBoxCellType)
  38.         ct1.ListControl = oListBox1
  39.         ct3.ListControl = oListBox3
  40.         AddHandler oListBox1.KeyDown, AddressOf pCellKeyDown
  41.         AddHandler oListBox3.KeyDown, AddressOf pCellKeyDown
  42.     End Sub
  43.     Private Sub pCellKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
  44.         If e.KeyCode = Keys.Enter Then
  45.             FpSpread1.StopCellEditing()
  46.             SendKeys.Send(&quot;{Enter}&quot;)
  47.         End If
  48.     End Sub
  49.     Private Sub FpSpread1_EnterCell(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.EnterCellEventArgs) Handles FpSpread1.EnterCell
  50.         Select Case e.Column
  51.             Case 1
  52.                 FpSpread1.EditMode = True
  53.             Case 3
  54.                 FpSpread1.EditMode = True
  55.             Case Else
  56.                 FpSpread1.EditMode = True
  57.         End Select
  58.     End Sub
  59.     Private Sub FpSpread1_Sheet1_CellChanged(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.SheetViewEventArgs) Handles FpSpread1_Sheet1.CellChanged
  60.         Select Case e.Column
  61.             Case 0
  62.                 Dim value As Integer = IIf(FpSpread1_Sheet1.Cells(e.Row, e.Column).Text = &quot;&quot;, 0, CInt(FpSpread1_Sheet1.Cells(e.Row, e.Column).Text))
  63.                 FpSpread1_Sheet1.Cells(e.Row, 1).Value = value
  64.             Case 2
  65.                 Dim value As Integer = IIf(FpSpread1_Sheet1.Cells(e.Row, e.Column).Text = &quot;&quot;, 0, CInt(FpSpread1_Sheet1.Cells(e.Row, e.Column).Text))
  66.                 FpSpread1_Sheet1.Cells(e.Row, 3).Value = value
  67.         End Select
  68.     End Sub
  69. End Class
复制代码
回复 使用道具 举报
sfchina1977
注册会员   /  发表于:2011-8-11 16:13:00
地板
怎么解决这个问题呀??请多指教~谢谢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-11 16:17:00
5#

回复 4# sfchina1977 的帖子

可以通过以下方法上传附件,请使用IE8浏览器:
1、点击【高级回复】
2、点击【添加附件】
3、如果没有反应,将回复窗口关掉
4、再次点击【高级回复】
5、点击【添加附件】
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-11 16:18:00
6#

回复 3# sfchina1977 的帖子

你好,你使用的 Spread WinForm5 是日文版还是英文版,我这边只能在英文版中看能否重现该问题
回复 使用道具 举报
sfchina1977
注册会员   /  发表于:2011-8-11 16:22:00
7#
我用的是日文版,不知道英文版是否可以再现:(
您先试一下吧
回复 使用道具 举报
sfchina1977
注册会员   /  发表于:2011-8-11 16:23:00
8#
顺便说一下,俺发的那个EditModePermanent的问题很要命呀~~
因为触发的事件混乱了,升级程序遭到重创:(
http://gcdn.grapecity.com/showtopic-1985.html
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-11 16:31:00
9#

回复 7# sfchina1977 的帖子

英文版和日文版是两个不同的产品,我只能先在引文版中试一下,如果无法重现,还得麻烦你把你的例子发来看一下。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-11 17:02:00
10#

回复 7# sfchina1977 的帖子

我试验结果如下,并没发现什么异常:
1、程序启动之后,ActiveCell是A1
2、输入1之后,A1得到输入焦点,并且值为1
3、按Enter之后ActiveCell变为B1,B1的值也为B1,再按Enter时B1显示下拉框,并且选项中选中的是B1,按Enter键之后ActiveCell变为C1
4、此时C1获得输入焦点,输入3之后按Enter键,D1变为ActiveCell,并且选中的是A3

不知道你说的在C1中输入3之后是什么异常
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部