Я привязываю список к DataGridView. Одним из свойств класса SomeObject будет код состояния (например, красный, желтый, зеленый). Могу ли я «привязать» статус к цвету фона ячейки легко? Как насчет привязки к всплывающей подсказке?Связывание с DataGridView. Есть ли способ «привязать» цвет фона ячейки?
ответ
Вы можете написать обработчик события CellFormatting DataGridView для настройки цвета фона. Вот обработанный пример (вам нужно затащили в DataGridView на форму по умолчанию затем дважды щелкнули на событии CellFormatting создать обработчик):
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private BindingSource _source = new BindingSource();
public Form1()
{
InitializeComponent();
_source.Add(new MyData(Status.Amber, "Item A"));
_source.Add(new MyData(Status.Red, "Item B"));
_source.Add(new MyData(Status.Green, "Item C"));
_source.Add(new MyData(Status.Green, "Item D"));
dataGridView1.DataSource = _source;
dataGridView1.Columns[0].Visible = false;
}
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
{
DataGridView dgv = sender as DataGridView;
MyData data = dgv.Rows[e.RowIndex].DataBoundItem as MyData;
switch (data.Status)
{
case Status.Green:
e.CellStyle.BackColor = Color.Green;
break;
case Status.Amber:
e.CellStyle.BackColor = Color.Orange;
break;
case Status.Red:
e.CellStyle.BackColor = Color.Red;
break;
}
}
}
}
public class MyData
{
public Status Status { get; set; }
public string Text { get; set; }
public MyData(Status status, string text)
{
Status = status;
Text = text;
}
}
public enum Status
{
Green,
Amber,
Red
}
}
Объектов здесь просто имеют статус и текст для простоты , Я создаю BindingSource для примера набора этих объектов, а затем использую это как источник данных для DataGridView. По умолчанию сетка автоматически создает столбцы при связывании, поэтому нет необходимости делать это вручную. Я также скрываю первый столбец, который привязан к значению состояния, поскольку мы будем окрашивать ячейки Text вместо этого.
Чтобы сделать картину, мы отвечаем на событие CellFormatting. Мы получаем ссылку на DataGridView, отправляя отправителя, а затем используем свойство RowIndex объекта DataGridViewCellFormattingEventArgs, чтобы добраться до самого элемента данных (каждый Row имеет свойство DataBoundItem, которое нам удобно это дает). Поскольку DataBoundItem является типом объекта, нам нужно отнести его к нашему конкретному типу, тогда мы можем фактически получить свойство Status ... phew!
У меня не было опыта программирования всплывающих подсказок, но я бы подумал, что вам следует ответить на событие MouseHover, а затем поработать над обнаружением того, на какую строку указывают, для начала.
Надеюсь, это поможет.
Хороший ответ - спасибо. – xyz 2009-03-11 12:21:45
В любом случае любой объект DataGridViewColumn может быть привязан только к одному объекту в объекте DataSource, имя свойства, задаваемое DataPropertyName каждой DataGridViewColumn (у вас будут конкретные типы столбцов, такие как: DataGridViewTextBoxColumn, ...).
Вы можете использовать событие DataGridView.CellFormatting, чтобы изменить стиль ячейки в зависимости от элемента привязки данных. В InDataGridViewCellFormattingEventArgs этого события вы получаете индекс строки, оттуда вы можете получить текущий объект (источник строки). Оттуда вы можете использовать любое свойство объекта, чтобы влиять на вашу ячейку.
Хорошая отправная точка (подобная идея): here
Вторая идея будет действительно развивать свой собственный тип DataGridViewColumn и добавить свойства для других вещей, которые нужно связать с. Например, так же, как и встроенное имя DataPropertyName, вы можете добавить свой собственный: BackgroundColorPropertyName. Отправной точкой для создания пользовательских DataGridViewColumns можно найти here.
- 1. DataGridView изменения фона ячейки цвет
- 2. DataGridView Выбранный цвет ячейки ячейки
- 3. DataGridView, получающий цвет фона
- 4. Есть ли способ определить цвет фона терминала?
- 5. Есть ли способ изменить цвет фона nsimagecell?
- 6. Цвет фона ячейки таблицы
- 7. Repeat цвет фона ячейки
- 8. Цвет ячейки в datagridview
- 9. Цвет фона ячейки
- 10. Изменить цвет фона ячейки
- 11. Roo gem: цвет фона ячейки
- 12. Цвет фона Datagridview для всех ячеек
- 13. DataGridView Copy Paste (со стилем, цвет фона, ...)
- 14. Есть ли способ сделать ячейки DataGridViewCheckBox меньше?
- 15. C# DataGridView Связывание
- 16. Связывание коллекции с DataGridView
- 17. Есть ли способ изменить цвет фона для контекстной панели действий?
- 18. Есть ли способ повторного сглаживания изображения на другой цвет фона?
- 19. Есть ли способ изменить выбранный цвет фона строки Silverlight DataGrid?
- 20. Есть ли способ установить цвет фона и границу текста аннотаций?
- 21. Есть ли способ изменить весь цвет фона UITextField UIAlertController?
- 22. Обратный цвет фона выбранной ячейки
- 23. UITableView Цвет фона ячейки исчезает
- 24. Как сделать прозрачный альфа-цвет ячейки datagridview?
- 25. Привязать цвет фона ко всем текстовым полям
- 26. Есть ли простой способ задать цвет фона отдельной ячейки в API таблицы ралли?
- 27. Установить цвет фона ячейки таблицы с щелчком
- 28. Дисплей: цвет фона столовой ячейки
- 29. Как изменить цвет фона ячейки
- 30. Цвет фона ячейки Android GridView
Я действительно надеюсь, что вы получите ответ на этот вопрос, и, возможно, я не смог понять это, я установил цвет фона после привязки данных, изменив стиль каждой ячейки. К сожалению, это очень медленно :(datagridview1.Rows [1] .Cells [2] .Style.BackColor = Color.Red – 2008-12-04 08:30:06