- - PR -
C# Grid内のComboBoxの背景色が勝手に変更される
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-31 11:34
こんにちは。
VS2005 C#(WindowsForm)にてSystem.Windows.Forms.DataGridを使用しています。 FormにTabControlを配置、その中ににGridを作成し、そのGrid内にあるComobBoxが初回の一回目の選択時(ドロップダウンリスト表示)時には背景色が白・文字が黒(標準)で表示されるのですが、そのComboから直接他の行のComboをクリックすると何故か背景色が黒になってしまいます。文字は黒のままです。 リスト背景色は白で統一したいのですが、以降どのComboBoxも背景が黒となってしまいます。 GridやGrid内Comboでは特に背景色の設定は行っていません。 逆に強制的に背景色を白で指定しても同様の現象が起きます。 但し同じGrid内にあるTextBoxを入力、再度Comboへ戻ると背景色はまた白へ戻ります。 この現象が起きるGridは8明細固定で、他の1行ずつ新規行が追加されるGrid形式の場合には発生しないようです。 説明がつたなく申し訳ございませんが、ご教授よろしくお願いいたします。 | ||||
|
投稿日時: 2007-01-31 14:16
えっと、もしかして「EditingControlShowing」イベントの中で、対象のComboBoxに対しイベントの追加とかしてます?
自分も以前、「EditingControlShowing」イベントの中で、ComboBoxに対し「SelectedIndexChanged」イベントを追加し、「SelectedIndexChanged」イベント内でDataGridViewの階層の深いところのプロパティを取得しようとすると、同じ現象が出た事があります。 この時は、DataGridViewを直接使用せず、イベントの引数「object sender」を利用して以下のように選択された値や、カレント行等を取得するようにして対応しました。
| ||||
|
投稿日時: 2007-01-31 15:56
早速のお返事ありがとうございます。
確かに「EditingControlShowing」内でComboBoxに対してイベントの追加をしています。 いただいたコードを元に、先ほどからテストしているのですが思うようにいきません。 確かに、[DataGridView_EditingControlShowing]イベント内の[combo_SelectedIndexChanged]イベントをテスト的にコメントにしたら、背景が黒くならなくなりました。(当然ですがSelectedIndexChanged内でIndexのセットを行っているため、その処理は動かなくなりましたが…) その為、原因は恐らく梶様が仰る内容と思われます。 送信制限がある為、以下続きます。 | ||||
|
投稿日時: 2007-01-31 15:58
初心者の為、愚かな質問かもしれませんが、再度質問させて下さい。
===== この時は、DataGridViewを直接使用せず、イベントの引数[object sender]を利用 して以下のように選択された値や、カレント行等を取得するようにして対応しました ===== 教えて下さったコードはどのイベントへ追加したらよろしいのでしょうか? ComboBoxのイベントは[DrawItem][SelectedIndexChanged]しか設定していません。 上記2つではテストを行いましたが、良い結果が得られません。 私の追加の方法が悪いのかもしれませんが、または別のイベントでしょうか? お忙しいところ大変申し訳ございませんが、ご教授いただけないでしょうか? お願いいたします。 | ||||
|
投稿日時: 2007-01-31 16:13
自分の場合は、前述の通り「SelectedIndexChanged」イベントの中の記述を変更しました。 ちなみに、何処に記述したかが問題ではなく、何処の値をどのようにしてアクセス(使用)しているかが問題だと思います。 | ||||
|
投稿日時: 2007-01-31 17:40
お忙しい中お返事下さり、ありがとうございました。
DataGridViewを参照して書かれている部分をsenderを使用したコーディングするわけですね。 少し色々試してみようと思います。 また進展や結果等ありましたら、書き込みさせていただきます。 | ||||
|
投稿日時: 2007-02-02 12:11
こんにちは。
先日教えていただいたコードを参考にComboBoxの「SelectedIndexChanged」イベントを修正してみました。そのところ、リスト背景色が黒に変更されず、正常に表示されるようになりました。 ありがとうございます。 ところで、この続きになってしまうかもしれませんが、このComboBoxにはマスタがバインドされているのですが、その中の名称を同じGrid内同行のTextBoxに表示させたいと考えています。 簡単に言いますと、ComboBoxでコードを選択し、TextBoxに名称を表示するといった感じです。 この際左辺の指定の仕方が悪いのか、値代入を行うと、名称は表示されるものの、再度ComboBoxの背景が黒になってしまいました。 左辺は以下のような設定を試してみました。 ・dataGridViewRow.Cells[X].Value(上記引用変数参照) ・grid.CurrentRow.Cells[X].Value(上記引用変数参照) ・grid[X, X].Value(上記引用変数参照) ・XXX_dataGridView_Grid.CurrentRow.Cells[0].value(頭はGrid名) ・XXX_dataGridView[X, X].Value(頭はGrid名) 続きます。 | ||||
|
投稿日時: 2007-02-02 12:12
記述を若干変えて階層を浅くして試したりもしたのですが、変わりませんでした。
この値代入行を削除すると、リストの背景は変わりません(白のままです)。 ComboBoxの背景色を変えず、イベント内で同じGrid内にあるTextBoxへ値を代入する方法はございますでしょうか? これは左辺の指定の仕方が悪いのでしょうか… 大変申し訳ございませんが、ご教授下さい。 よろしくお願いいたします。 |
1|2|3|4
次のページへ»