- PR -

C# Grid内のComboBoxの背景色が勝手に変更される

投稿者投稿内容
イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:17
A
コード:
        // プルダウンリスト設定
        private void SetGrid()
        {
            mTableAdapter .FillByFctMovFclCd(hDataSet.MMOVFCL, _usrInfo.PfctKb + '%');
            if (hDataSet.MMOVFCL.Count <= 0)
            {
                return;
            }
            MOVFCLCD.DataSource = hDataSet.MMOVFCL.DefaultView;
            MOVFCLCD.ValueMember = "ITEMCODE";
            MOVFCLCD.DisplayMember = "ITEMCODE";

            hDataSet.TOGNMOVFCL.Clear();
            for (int i = 0; i < MAX_MOV; i++)
            {
                HDataSet.TOGNMOVFCLRow row = hDataSet.TOGNMOVFCL.NewTOGNMOVFCLRow();
                row.OGNDSPNO = i.ToString();
                hDataSet.TOGNMOVFCL.AddTOGNMOVFCLRow(row);
            }
        }
        private void mComboBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            if (e.Index == -1)
                return;
            DataRowView rowview = ((DataRowView)((ComboBox)sender).Items[e.Index]);
            if (rowview == null)
            {
                return;
            }
            e.DrawBackground();
            string str = rowview["ITEMNAME"].ToString();
            if (str == null)
            {
                return;
            }
            e.Graphics.DrawString(str,
                                  e.Font,
                                  System.Drawing.Brushes.Black,
                                  new RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height));
        }

イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:18
B
コード:
        private void mComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataGridViewComboBoxEditingControl combocon = (DataGridViewComboBoxEditingControl)sender;
            DataGridView grid = combocon.EditingControlDataGridView;
            DataGridViewRow dataGridViewRow = grid.CurrentRow;

            if (combocon.SelectedIndex == -1)
                return;

            DataRowView rowview = ((DataRowView)((ComboBox)sender).SelectedItem);
            if (rowview == null)
            {
                return;
            }
            dataGridViewRow.Cells["MOVFCLNM"].Value = rowview["MOVFCLNM"].ToString();
        }
        private void m_dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.Value == null)
                return;
            if ((e.ColumnIndex == m_dataGridView.Columns["PTN1"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN2"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN3"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN4"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN5"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["MOVFCLCD"].DisplayIndex))
            {
                if (e.Value.ToString().Length == 0)
                {
                    e.Value = DBNull.Value;
                }
            }
        }

イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:20
C
コード:
        private void m_dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            if ((e.ColumnIndex == m_dataGridView.Columns["PTN1"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN2"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN3"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN4"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN5"].DisplayIndex))
            {
                if (!string.IsNullOrEmpty(e.FormattedValue.ToString()))
                {
                    if (!_errinfo.NumericCheck(e.FormattedValue.ToString()))
                    {
                        _errinfo.ErrorMessage(string.Format(Resources.ERRMSG_011, Resources.CODE_004));
                        m_dataGridView[e.ColumnIndex, e.RowIndex].Selected = true;
                        e.Cancel = true;
                        return;
                    }
                }
            }
        }
        private void m_dataGridView_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
        {
            if (m_dataGridView.RowCount < MAX_MOV)
            {
                setMaxDspNo(m_dataGridView, e.Row, m_dataGridView.Columns["OGNDSPNO"].DisplayIndex, null);
            }
        }

イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:20
C
コード:
        private void m_dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            if ((e.ColumnIndex == m_dataGridView.Columns["PTN1"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN2"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN3"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN4"].DisplayIndex) ||
                (e.ColumnIndex == m_dataGridView.Columns["PTN5"].DisplayIndex))
            {
                if (!string.IsNullOrEmpty(e.FormattedValue.ToString()))
                {
                    if (!_errinfo.NumericCheck(e.FormattedValue.ToString()))
                    {
                        _errinfo.ErrorMessage(string.Format(Resources.ERRMSG_011, Resources.CODE_004));
                        m_dataGridView[e.ColumnIndex, e.RowIndex].Selected = true;
                        e.Cancel = true;
                        return;
                    }
                }
            }
        }
        private void m_dataGridView_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
        {
            if (m_dataGridView.RowCount < MAX_MOV)
            {
                setMaxDspNo(m_dataGridView, e.Row, m_dataGridView.Columns["OGNDSPNO"].DisplayIndex, null);
            }
        }

イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:22
D
コード:
        private void m_dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (((DataGridView)sender).CurrentCell.ColumnIndex == ((DataGridView)sender).Columns["MOVFCLCD"].DisplayIndex)
            {
                ((ComboBox)e.Control).DrawMode = DrawMode.OwnerDrawFixed;
                ((ComboBox)e.Control).DrawItem += new DrawItemEventHandler(mComboBox_DrawItem);
                ((ComboBox)e.Control).SelectedIndexChanged += new EventHandler(mComboBox_SelectedIndexChanged);
            }
        }
        /// 表示a@MAX値+1を取得する
        private void setMaxDspNo(DataGridView datagridView, DataGridViewRow viewRow, int columnIndex, int? maxNo)            
if (maxNo == null)
            {
                maxNo = -1;
            }
            datagridView.EndEdit();
            for (int index = 0; index < datagridView.RowCount - 1; index++)
            {
                string str = datagridView[columnIndex, index].Value.ToString();
                if (!string.IsNullOrEmpty(str))
                {
                    if (maxNo < Convert.ToInt32(str))
                    {
                        maxNo = Convert.ToInt32(str);
                    }
                }
            }
            viewRow.Cells[columnIndex].Value = Convert.ToString(maxNo + 1);
        }
    }
}
}



以下にdesignerファイルが続きます。
イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:25
designerファイル@
コード:
 namespace HAP
{
    partial class FormTest
    {
        private System.ComponentModel.IContainer components = null;
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows フォーム デザイナで生成されたコード
        /// <summary>
        /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
        /// コード エディタで変更しないでください。
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.tabControl1 = new System.Windows.Forms.TabControl();
            this.tabPage1 = new System.Windows.Forms.TabPage();
            this.label1 = new System.Windows.Forms.Label();
            this.tabPage2 = new System.Windows.Forms.TabPage();
            this.m_dataGridView = new System.Windows.Forms.DataGridView();
            this.mBindingSource = new System.Windows.Forms.BindingSource(this.components);
            this.hDataSetBindingSource1 = new System.Windows.Forms.BindingSource(this.components);
            this.hDataSet  = new HenseiAP.HDataSet ();
            this.tBindingSource  = new System.Windows.Forms.BindingSource(this.components);


イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:27
designerファイルA
コード:
            this.tTableAdapter1  = new HenseiAP.HDataSet TableAdapters.TTableAdapter();
            this.mTableAdapter 1 = new HenseiAP.HDataSet TableAdapters.MTableAdapter ();
            this.tmTableAdapter1  = new HenseiAP.HDataSet TableAdapters.TMTableAdapter();
            this.mTableAdapter  = new HenseiAP.HDataSet TableAdapters.MTableAdapter ();
            this.hDataSetBindingSource = new System.Windows.Forms.BindingSource(this.components);
             this.MOVFCLNM = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MOVFCLCD = new System.Windows.Forms.DataGridViewComboBoxColumn();
            this.PTN1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.PTN2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.PTN3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.PTN4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.PTN5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.OGNDSPNO = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.tabControl1.SuspendLayout();
            this.tabPage1.SuspendLayout();
            this.tabPage2.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.mBindingSource)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.hDataSetBindingSource1)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.hDataSet )).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.tBindingSource )).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.hDataSetBindingSource)).BeginInit();
            this.SuspendLayout();



イナバ
常連さん
会議室デビュー日: 2007/01/31
投稿数: 37
投稿日時: 2007-02-07 17:28
designerファイルB
コード:
        // tabControl1
            this.tabControl1.Controls.Add(this.tabPage1);
            this.tabControl1.Controls.Add(this.tabPage2);
            this.tabControl1.Location = new System.Drawing.Point(24, 23);
            this.tabControl1.Name = "tabControl1";
            this.tabControl1.SelectedIndex = 0;
            this.tabControl1.Size = new System.Drawing.Size(553, 221);
            this.tabControl1.TabIndex = 0;
            // tabPage1
            this.tabPage1.Controls.Add(this.label1);
            this.tabPage1.Location = new System.Drawing.Point(4, 21);
            this.tabPage1.Name = "tabPage1";
            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage1.Size = new System.Drawing.Size(545, 196);
            this.tabPage1.TabIndex = 0;
            this.tabPage1.Text = "tabPage1";
            this.tabPage1.UseVisualStyleBackColor = true;
            // label1
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(19, 17);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(63, 12);
            this.label1.TabIndex = 0;
            this.label1.Text = "テスト用です";
            this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;


スキルアップ/キャリアアップ(JOB@IT)