私は自分のDataGridView
を使って物を見せたいと思っています。私は、ユーザーがDataGridView
から行やフィールドなどを選択できないようにしたいと思っています。DataGridViewで選択する機能を無効にするにはどうすればよいですか?
どうすればいいですか?
私は自分のDataGridView
を使って物を見せたいと思っています。私は、ユーザーがDataGridView
から行やフィールドなどを選択できないようにしたいと思っています。DataGridViewで選択する機能を無効にするにはどうすればよいですか?
どうすればいいですか?
使用DataGridView.ReadOnly
property
MSDN exampleのコードは、主ディスプレイを意図DataGridView
制御におけるこのプロパティの使用を示します。この例では、コントロールの視覚的外観がいくつかの方法でカスタマイズされ、コントロールが限定的な対話性のために構成されています。
サンプルコードでこれらの設定を確認します
// Set property values appropriate for read-only
// display and limited interactivity
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.AllowUserToOrderColumns = true;
dataGridView1.ReadOnly = true;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
dataGridView1.AllowUserToResizeColumns = false;
dataGridView1.ColumnHeadersHeightSizeMode =
DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
dataGridView1.AllowUserToResizeRows = false;
dataGridView1.RowHeadersWidthSizeMode =
DataGridViewRowHeadersWidthSizeMode.DisableResizing;
もし私が投票できたら、私はそうするでしょう。まだ十分な担当者がいない。しかし、読み取り専用は、ユーザーがセルを選択するのを防ぐために何もしません。 – JSON
@JSON - 投票を上下に気にしないでください。代わりに地域社会から学ぶことができる解決策を持つことは素晴らしいことでしょう。 –
私はこれでいいと思う:
private void myDataGridView_SelectionChanged(Object sender, EventArgs e)
{
dgvSomeDataGridView.ClearSelection();
}
私はDataGridView
は選択不可あってはならないという広義の主張に同意しません。いくつかのUIは、ツールやタッチスクリーンのために作られています。そして、選択は実際にそれらをどこかに得ることをユーザーに誤解させる可能性があります。
コントロールのReadOnly = true
を設定しても、セルまたは行を選択できるかどうかには影響しません。また、視覚的にも機能的にも弱点があり、Enabled = false
を設定することができます。
もう1つの選択肢は、選択した色のコントロールを選択されていない色と同じに設定することですが、セルの背景色を操作した場合、この方法でも厄介な結果が得られます。
質問「選択した行の背景色を変更するにはどうすればよいですか?選択した行の背景色と前景色を設定する方法を説明しています。Question
これは私のために十分機能しました。 –
user1036944
Hmm ..すべてのVB.NETコードの回答がC#に編集されているのだろうかと思っています。 – edhubbell
これはより良いです:) –
私はその後faking the prevention of selectionが私のために最善を働いた、None
からScollBars
、false
からRowHeadersVisible
、true
にReadOnly
、false
にすべてAllowUser...
のプロパティを設定することが分かりました。 Enabled
からfalse
に設定しないと、ユーザーはグリッドからデータをコピーすることができます。あなたは、単純な表示グリッドをしたいとき
次のコードは、(仮定の行が同じ高さ)を見てクリーンアップ:
int width = 0;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
width += dataGridView1.Columns[i].Width;
}
dataGridView1.Width = width;
dataGridView1.Height = dataGridView1.Rows[0].Height*(dataGridView1.Rows.Count+1);
あなたは次のように選択されたセルの背景色を透明に設定ことがあります。
row.DataGridView.Enabled = false;
row.DefaultCellStyle.BackColor = Color.LightGray;
row.DefaultCellStyle.ForeColor = Color.DarkGray;
(行=のDataGridView:
DataGridView.RowsDefaultCellStyle.SelectionBackColor = System.Drawing.Color.Transparent;
これは魔法のように私のために働きました。NewRow(適切な過負荷);)
Enabled
プロパティfalse
または
this.dataGridView1.DefaultCellStyle.SelectionBackColor = this.dataGridView1.DefaultCellStyle.BackColor;
this.dataGridView1.DefaultCellStyle.SelectionForeColor = this.dataGridView1.DefaultCellStyle.ForeColor;
に選択することができない)は、ユーザーに(非常に迷惑本当に悪いユーザーインターフェイスのデザインです。ユーザーがレポートから何かをコピーしたい場合はどうなりますか?私は読み取り専用で十分であると思う(下記の回答に記載)。 – banging