public Control makeValueBox(int x, int y, String initValue, String name) { NumberTextBox textBox = new NumberTextBox(); textBox.HideSelection = false; textBox.Location = new System.Drawing.Point(x, y); textBox.Name = name; textBox.Size = new System.Drawing.Size(_textWidth, _textHeight); textBox.TabIndex = 0; try { textBox.Text = initValue; } catch { textBox.Text = "0"; } return(textBox); }
public void AddRow(String name, String value = "0") { if (valueDic.ContainsKey(name)) { this[name].Text = value; return; } int y = 0; int x = 0; setValueX(); if (isInit == true) {//디자이너에서 보여주기 위해 초기에 라벨이 추가되어 있다. //하지만 사용자가 addRow를 호출하는 순간 기존의 것은 없어져야 한다. isInit = false; this.clear(); _initWidth = this.Width; isInit = false; } int count = values.Count; if (count > 0) {//이전에 addRow를 호출하여 추가된 것이 있다면 그 추가된 것의 위치를 차용해 온다. x = names[count - 1].Location.X; y = values[count - 1].Location.Y; y += values[count - 1].Height; y += _rowPadding; } if (y + 30 > this.Height) { //만일 초기 높이를 넘어갔다면 if (_isScrollEnabled == false) { //스크롤 불가시 옆(오른쪽)으로 확장해 주어야 한다. if (_isColWidthFixed) //한 열의 크기가 고정되어 있다면 { //고정된 만큼만 우측으로 이동하여 그려준다. x += _fixedColWidth; y = 0; _numOfCols++; } else //고정이 아니라면, 비율에 따라서 이동하여야 할 것이다. {//여기서 비율은 실시간으로 계산되어, col의 개수로 나뉜다. _numOfCols++; _isNeedReposition = true; if (_isAutoRedraw) { reDrawAll(); //2개 이상의 col이라면 이전에 그린 줄의 위치를 재설정 해야 한다. } //그러나 autoRedraw 설정이 되어 있어야만 그리고, 그렇지 않다면 사용자가 직접 reDrawAll명령을 //호출해야 할 것이다. x = (int)((_initWidth) * ((double)(_numOfCols - 1) / (double)_numOfCols)); y = 0; } }//스크롤 가능 시에는 스크롤 바의 움직임에 따라 백그라운드를 리프레시 해 주는 루틴을 넣는다. else if (_isNeedScroll == false) //두 번 루틴을 넣는 것을 방지하기 위해 _isNeedScroll변수를 셋팅한다. { _isNeedScroll = true; //scroll이 필요할 때 정해 줄 것 BackPanel.Scroll += new ScrollEventHandler(BackPanel_Scroll); ScrolltimerTickEventHandler = new EventHandler(scrollTimer_Tick); BackPanel.MouseWheel += new MouseEventHandler(BackPanel_MouseWheel); scrollTimer = new Timer(); scrollTimer.Interval = 1000; scrollTimer.Tick += ScrolltimerTickEventHandler; } } setValueX(); Label nameLabel = makeLabel(x, y, name); int valuePos = (valueX > nameLabel.Width)? valueX : nameLabel.Width; if (value.Equals("")) { value = "0"; } NumberTextBox valueTextBox = makeTextBox(x + valuePos, y, value, name); nameLabel.MouseHover += new EventHandler(valueLabel_MouseHover); nameLabel.MouseLeave += new EventHandler(valueLabel_MouseLeave); nameLabel.ForeColor = _foreColors[0]; valueTextBox.ForeColor = _foreColors[1]; names.Add(nameLabel); nameString.Add(name); values.Add(valueTextBox); valueDic[name] = valueTextBox; BackPanel.Controls.Add(nameLabel); BackPanel.Controls.Add(valueTextBox); if (_isUnderLine) { UserControl underLine = new UserControl(); underLine.Location = new Point(0, y + valueTextBox.Height); underLine.Width = (_isScrollEnabled) ? _initWidth - 20 : _initWidth;//스크롤바가 생겼을 때를 대비 underLine.Height = 1; underLine.BackColor = _underLineColor; BackPanel.Controls.Add(underLine); } //valueDic.Add(name, valueTextBox); //BackPanel.SuspendLayout(); //BackPanel.ResumeLayout(); }