找回密码
 立即注册

QQ登录

只需一步,快速开始

dapsjj
初级会员   /  发表于:2016-11-8 15:10  /   查看:3666  /  回复:1
本帖最后由 dapsjj 于 2016-11-8 15:51 编辑

第一幅图中被选择的行的背景色把文字的颜色都覆盖了,而且点击的时间的这个单元格没有变成蓝色。怎么处理呢?像要做成第二副图的效果。有哪个颜色能浅点儿或者怎么改能让文字显示出来呢?代码为如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Runtime.Remoting.Messaging;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using MY.BLL;
  12. using MY.Common;

  13. namespace PcSystemMain
  14. {
  15.     public partial class frmGetActualProduction : Form
  16.      
  17.     {
  18.         #region
  19.         private string connPCDB = null;
  20.         private CommonPara cp = new CommonPara();
  21.         private string flag = "";//初始化被选中的记录的标志位空
  22.         private int checked_count = 0;//计算被选中的checkbox的数量
  23.         private int bin = -1;
  24.         #endregion

  25.         private delegate bool DoWorkDelegate();

  26.         public frmGetActualProduction()
  27.         {
  28.             InitializeComponent();
  29.             this.loadingPanel1.OnRotateStateChanged += new LoadingPanel.RotateStateChangedHandler(loadingPanel1_OnRotateStateChanged);
  30.             SelectionRenderer sr = new SelectionRenderer();
  31.             sprshow.SelectionRenderer = sr;
  32.                         sprshow.ActiveSheet.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Row;
  33.         }

  34.         private void cmdExit_Click(object sender, EventArgs e)
  35.         {
  36.             this.Close();
  37.         }

  38.         
  39.         private void frmGetActualProduction_Load(object sender, EventArgs e)
  40.         {
  41.             try
  42.             {
  43.                 connPCDB = cp.GetConString();
  44.                 SqlHelper sh = new SqlHelper(connPCDB);
  45.                 DataSet ds = sh.ExecuteDatasetSQL("SELECT c1,c2,0 as c3, c4  FROM   tabel1 ");
  46.                 setSpreadData(ds.Tables[0]);
  47.             }
  48.             catch (Exception)
  49.             {
  50.                
  51.             }
  52.         }
  53.    

  54.         private void setSpreadData(DataTable spdt)
  55.         {
  56.             if (this.sprshow.ActiveSheet.RowCount > 0)
  57.             {
  58.                 this.sprshow.ActiveSheet.Rows.Count = 0;
  59.             }
  60.             this.sprshow.ActiveSheet.Rows.Count = spdt.Rows.Count;


  61.             DataRowCollection rows = spdt.Rows;
  62.             int rowCount = rows.Count;
  63.             int nowRow = 0;
  64.             for (int i = 0; i < rowCount; i++)
  65.             {
  66.                 sprshow.ActiveSheet.Cells[nowRow, 0].Value = rows[i]["A"].ToString();
  67.                 sprshow.ActiveSheet.Cells[nowRow, 1].Value = rows[i]["B"].ToString();
  68.                 sprshow.ActiveSheet.Cells[nowRow, 2].Value = rows[i]["C"].ToString();
  69.                 sprshow.ActiveSheet.Cells[nowRow, 3].Value = rows[i]["D"].ToString();

  70.                 nowRow++;
  71.             }
  72.         }

  73.         private void sprshow_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
  74.         {
  75.             checked_count = 0;
  76.             
  77.             for (int i = 0; i < sprshow.Sheets[0].Rows.Count; i++)
  78.             {
  79.                 if (checked_count <= 1)
  80.                 {
  81.                     flag = sprshow.Sheets[0].Cells[i, 2].Value.ToString();//复选框是否被选中
  82.                     if (flag == "True")//"True"为选中,"0"为未选中。
  83.                     {
  84.                         int col4_value = int.Parse(sprshow.Sheets[0].Cells[i, 3].Value.ToString());//第4列
  85.                         
  86.                         if (col4_value == 1)
  87.                         {
  88.                             sprshow.Sheets[0].Cells[i, 2].Value = 0;//清除被选的状态
  89.                             bin = int.Parse(sprshow.Sheets[0].Cells[i, 0].Value.ToString());
  90.                             MessageBox.Show(bin);
  91.                             break;
  92.                         }
  93.                         else
  94.                         {
  95.                             checked_count++;
  96.                         }
  97.                     }
  98.                 }
  99.                 else
  100.                 {
  101.                     MessageBox.Show("只能选一个.");
  102.                     checked_count = 0;
  103.                     break;
  104.                 }
  105.             }
  106.         }

  107.         void loadingPanel1_OnRotateStateChanged()
  108.         {
  109.             this.Invoke(new Action(delegate()
  110.             {
  111.                 this.sprshow.Visible = !this.sprshow.Visible;
  112.                 this.Cmdchace.Enabled = !this.Cmdchace.Enabled;
  113.                 this.cmdGetActualProduction.Enabled = !this.cmdGetActualProduction.Enabled;
  114.                 this.cmdExit.Enabled = !this.cmdExit.Enabled;
  115.             }));
  116.         }

  117.         private bool DoWork()
  118.         {
  119.             System.Threading.Thread.Sleep(10000);
  120.             return true;
  121.         }

  122.         private void DoWorkCallBack(IAsyncResult ar)
  123.         {
  124.             AsyncResult result = (AsyncResult)ar;
  125.             DoWorkDelegate caller = (DoWorkDelegate)result.AsyncDelegate;
  126.             bool bResult = caller.EndInvoke(ar);

  127.             this.loadingPanel1.Stop();
  128.         }

  129.         private void cmdGetActualProduction_Click(object sender, EventArgs e)
  130.         {
  131.             if (MessageBox.Show("", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
  132.             {
  133.                 return;
  134.             }
  135.             else { //点击的是"OK"按钮
  136.                 int count = 0;//计算被选择的复选框数量
  137.                 string status = "";
  138.                 for (int i = 0; i < sprshow.Sheets[0].Rows.Count; i++)
  139.                 {
  140.                     status = sprshow.Sheets[0].Cells[i, 2].Value.ToString();//复选框是否被选中
  141.                     if (status == "True")//"True"为选中,"0"为未选中。
  142.                     {
  143.                         count++;
  144.                     }
  145.                 }
  146.                 if (count == 0)
  147.                 {
  148.                     MessageBox.Show("请选择.");
  149.                     return;
  150.                 }
  151.                 else if (count > 1)
  152.                 {
  153.                     MessageBox.Show("只能选一个.");
  154.                     return;
  155.                 }
  156.                 else//count == 1
  157.                 {

  158.                         try
  159.                         {
  160.                             connPCDB = cp.GetConString();
  161.                             SqlHelper sh = new SqlHelper(connPCDB);
  162.                             sh.Param = sh.GetNewParam();
  163.                             sh.Param.AddParam("@intBin", SqlDbType.Int, bin);
  164.                             DataSet ds = sh.ExecuteDatasetSP("AcquireMeterActualResults", ref sh.Param, 3000);
  165.                            
  166.                         }
  167.                         catch (Exception)
  168.                         {
  169.                            
  170.                         }  

  171.                 }

  172.             }
  173.         }

  174.         private void Cmdchace_Click(object sender, EventArgs e)
  175.         {
  176.            
  177.             for (int i = 0; i < sprshow.Sheets[0].Rows.Count; i++) {
  178.                  int col4_value = int.Parse(sprshow.Sheets[0].Cells[i, 3].Value.ToString());//第4列
  179.                  if (col4_value==1)
  180.                  {
  181.                      for (int j = 0; j <= i;j++ )
  182.                      {
  183.                          sprshow.Sheets[0].Cells[j, 2].Value = 0;
  184.                      }
  185.                      MessageBox.Show("不能全选.");
  186.                      break;
  187.                 }
  188.                 sprshow.Sheets[0].Cells[i, 2].Value = true;
  189.             }
  190.         }


  191.     }

  192.     public class SelectionRenderer : FarPoint.Win.Spread.ISelectionRenderer
  193.     {
  194.         public void PaintSelection(Graphics g, int x, int y, int width, int height)
  195.         {
  196.             SolidBrush selectionBrush = new SolidBrush(Color.Blue);
  197.             g.FillRectangle(selectionBrush, x, y, width, height);
  198.             selectionBrush.Dispose();
  199.         }
  200.     }
  201. }
复制代码


2016-11-08_150632.png
164622n15w3jm0z11imi1i.png

1 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-8 16:55:42
推荐
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部