/// <summary> /// 格子改变内容 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void pane_NumberChanged(object sender, NumberChangeEventArgs e) { if (this.Enabled) { Pane pane = sender as Pane; if (matrix[row, col] == 0 && pane.Number != 0) { empty--; } else if (matrix[row, col] != 0 && pane.Number == 0) { empty++; } int fn = matrix[row, col]; matrix[row, col] = pane.Number; if (e.IsKeyEvent) { if (hisStep.Count > stepIndex + 1) { hisStep.RemoveRange(stepIndex + 1, hisStep.Count - stepIndex + 1); } hisStep.Add(new Step(row, col, fn, pane.Number)); stepIndex = hisStep.Count - 1; } CheckError(); CheckStatu(); //将pane格子的NumberChanged事件传递给窗体,调用窗体的方法 edit(this, EventArgs.Empty); } }
/// <summary> /// 格子改变内容 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void pane_NumberChanged(object sender, NumberChangeEventArgs e) { if (this.Enabled) { if (e.IsKeyEvent) { matrix[row, col] = e.TNumber; if (e.FNumber == 0 && e.TNumber > 0) { matrix.Empty--; } else if (e.FNumber > 0 && e.TNumber == 0) { matrix.Empty++; } if (hisStep.Count > stepIndex + 1) { hisStep.RemoveRange(stepIndex + 1, hisStep.Count - stepIndex - 1); } hisStep.Add(new Step(row, col, e.FNumber, e.TNumber)); stepIndex = hisStep.Count - 1; } CheckError(); CheckStatu(); //将pane格子的NumberChanged事件传递给窗体,调用窗体的方法 edit(this, EventArgs.Empty); } }
/// <summary> /// 设置方格的值 /// </summary> /// <param name="value">值</param> /// <param name="isKeyEvent">是键盘输入事件</param> public void SetNumber(int value, bool isKeyEvent) { //是允许的值时接收 if (value >= 0 && value < 10 && value != number) { NumberChangeEventArgs args = new NumberChangeEventArgs(isKeyEvent, number, value); number = value; this.Invalidate(); //调用事件 numberChanged(this, args); } }