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; } }