Example #1
0
        public TextBoxCard()
        {
            cardDataGrid = new CardDataGrid();

            CreateDropDownButtonImage();
            //点击下拉按钮
            this.Enter             += new EventHandler(TextBoxCard_Enter);
            this.ButtonCustomClick += new EventHandler(TextBoxEr_ButtonCustomClick);
        }
 public TextBoxCard()
 {
     cardDataGrid = new CardDataGrid();
    
     CreateDropDownButtonImage();
     //点击下拉按钮
     this.Enter += new EventHandler(TextBoxCard_Enter);
     this.ButtonCustomClick += new EventHandler(TextBoxEr_ButtonCustomClick);
     
 }
        private void InitShowCard(int ColumnIndex,CardDataGrid cardDataGrid)
        {
            //if (PageNoChanged != null)
            //{
            //    cardDataGrid.textpager.PageNoChanged += new PagerEventHandler(textpager_PageNoChanged);
            //    cardDataGrid.textpager.pageNo = 1;
            //}

            cardDataGrid.textdataGrid.DoubleClick += new EventHandler(dgvSelectCard_DoubleClick);
            cardDataGrid.ClickLetter += new EventHandler(cardDataGrid_ClickLetter);
            cardDataGrid.DeleteLetter += new EventHandler(cardDataGrid_DeleteLetter);
            cardDataGrid.ConfirmLetter += new EventHandler(cardDataGrid_ConfirmLetter);
            cardDataGrid.CloseLetter += new EventHandler(cardDataGrid_CloseLetter);


            int cardIndex;
            if (ColumnIsBindSelectionCard(ColumnIndex,out cardIndex))
            {
                DataGridViewColumn[] columns = null;
                if (string.IsNullOrEmpty(selectionCards[cardIndex].CardColumn))
                {
                    columns = new DataGridViewColumn[selectionCards[cardIndex].ShowCardColumns.Length];
                    for (int j = 0; j < selectionCards[cardIndex].ShowCardColumns.Length; j++)
                    {
                        columns[j] = selectionCards[cardIndex].ShowCardColumns[j];
                    }
                }
                else
                {
                    string[] Columns = selectionCards[cardIndex].CardColumn.Split(new char[] { ',' });
                    columns = new DataGridViewColumn[Columns.Length];
                    for (int k = 0; k < columns.Length; k++)
                    {
                        string[] pms = Columns[k].Split(new char[] { '|' });
                        columns[k] = new DataGridViewTextBoxColumn();
                        columns[k].Name = "col" + pms[0];
                        columns[k].HeaderText = pms[1];
                        columns[k].DataPropertyName = pms[0];
                        if (pms[2] == "auto")
                            columns[k].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                        else
                            columns[k].Width = Convert.ToInt32(pms[2]);
                        columns[k].ReadOnly = true;
                        columns[k].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
                        //columns[i].DefaultCellStyle = new DataGridViewCellStyle();
                    }
                }
                cardDataGrid.textdataGrid.Columns.Clear();
                cardDataGrid.textdataGrid.Columns.AddRange(columns);
                cardDataGrid.Tag = selectionCards[cardIndex];
                DataGridViewSelectionCard selectionCardInfo = selectionCards[cardIndex];
                cardDataGrid.Width = selectionCardInfo.CardSize.Width;
                cardDataGrid.Height = selectionCardInfo.CardSize.Height;
                cardDataGrid.textpager.IsPage = selectionCardInfo.IsPage;
                cardDataGrid.textpager.DataSource = selectionCardInfo.DataSource;
            }
            cardDataGrid.letterpanel.Visible = IsShowLetter;
            cardDataGrid.textpager.Visible = IsShowPage;
            cardDataGrid.DrawLetter();
            
            cardDataGrid.Hide();

            if (PageNoChanged != null)
            {
                cardDataGrid.textpager.PageNoChanged += new PagerEventHandler(textpager_PageNoChanged);
                cardDataGrid.textpager.pageNo = 1;
            }
        }
        /// <summary>
        /// 设置选择卡位置
        /// </summary>
        private void SetSelectCardLocation(int ColumnIndex, CardDataGrid cardDataGrid)
        {
            int grdX = 0;
            int grdY = 0;
            System.Windows.Forms.Control pctrl = this.Parent;
            while (true)
            {
                if (pctrl is System.Windows.Forms.Form)
                    break;
                else
                {
                    grdX += pctrl.Left;
                    grdY += pctrl.Top;

                    pctrl = pctrl.Parent;
                    if (pctrl is System.Windows.Forms.Form)
                    {
                        break;
                    }
                }
            }
            //窗体
            System.Windows.Forms.Form parentForm = (System.Windows.Forms.Form)pctrl;
            if (!parentForm.Controls.Contains(cardDataGrid))
            {
                parentForm.Controls.Add(cardDataGrid);
            }

            //正常情况下的坐标
            grdX = grdX + this.Left + (this.RowHeadersVisible == true ? this.RowHeadersWidth : 0);
            for (int i = 0; i < this.Columns.Count; i++)
            {
                if (this.Columns[i].Visible)
                {
                    if (i == CurrentCell.ColumnIndex)
                        break;
                    else
                        grdX = grdX + Columns[i].Width;
                }
            }

            //顶部Y坐标
            grdY = grdY + this.Top + this.ColumnHeadersHeight;
            //计算相对可见行是第几行
            int visiableRowIndex = this.CurrentRow.Index - this.FirstDisplayedCell.RowIndex + 1;
            grdY = grdY + this.RowTemplate.Height * visiableRowIndex;


            int buttomLeft = parentForm.Height - grdY - this.RowTemplate.Height;//选项卡当前位置的底部与窗体下边界的距离(留1个行高的距离)
            //如果超出下边界
            if (cardDataGrid.Height > buttomLeft)
            {
                //在上面显示选择卡
                grdY = grdY - this.RowTemplate.Height - cardDataGrid.Height;
                if (grdY < 0)
                    grdY = 0;
                else
                    grdY = grdY + 0;
            }
            else
            {
                grdY = grdY + 0;
            }

            int rightLeft = parentForm.Width - grdX; //选项卡当前位置的右部与窗体右边界的距离
            int tmpx = grdX;//暂存
            //如果超出右边界,选项卡的右部与窗体右边界对齐
            if (cardDataGrid.Width > rightLeft)
            {
                grdX = grdX - cardDataGrid.Width + rightLeft - 10;
                if (grdX < 0)
                    grdX = tmpx;
                else
                    grdX = grdX - 0;
            }
            else
            {
                grdX = grdX + 0;
            }

            cardDataGrid.Location = new System.Drawing.Point(grdX, grdY);

            cardDataGrid.BringToFront();

        }
        public void BindSelectionCardDataSource(int index, DataTable DataSource)
        {
            if (selectionCards.Length > 0 && selectionCards.Length>index)
            {
                selectionCards[index].DataSource = DataSource;

                cardDataGrids[index]=new CardDataGrid();
                InitShowCard(selectionCards[index].BindColumnIndex, cardDataGrids[index]);
            }
        }
 /// <summary>
 /// 获取返回值
 /// </summary>
 /// <param name="grdSelectCard"></param>
 /// <param name="dataSourceIsDataTable"></param>
 /// <returns></returns>
 private object GetReturnValue(CardDataGrid cardDataGrid)
 {
     try
     {
         int grdRowIndex = cardDataGrid.textdataGrid.CurrentCell.RowIndex;
         return ((DataRowView)cardDataGrid.textdataGrid.Rows[grdRowIndex].DataBoundItem).Row;
     }
     catch (Exception err)
     {
         Console.WriteLine(err.Message);
         return null;
     }
 }