更改 NSTableView 选定行的突出显示颜色
Change highlight color of NSTableView selected row
如何更改 NSTable 选中行的背景颜色?
这里不错answer,不过是为了方便查看。
现在,我看到的是我可以更改选定的突出显示样式:
MyTAble.SelectionHighlightStyle = NSTableViewSelectionHighlightStyle.Regular;
但是这里只有3个选项;
None = -1L,
Regular,
SourceList
我尝试了以下解决方案:
patientListDelegate.SelectionChanged += (o, e) => {
var r = PatientTableView.SelectedRow;
var v = PatientTableView.GetRowView (r, false);
v.Emphasized = false;
};
它正常工作,但如果我最小化然后再次打开应用程序,仍然显示蓝色
我在 objective-c
中找到了答案
Change selection color on view-based NSTableView
这是 C# 实现:
内部代表:
public override NSTableRowView CoreGetRowView (NSTableView tableView, nint row)
{
var rowView = tableView.MakeView ("row", this);
if (rowView == null) {
rowView = new PatientTableRow ();
rowView.Identifier = "row";
}
return rowView as NSTableRowView;
}
和自定义行:
public class PatientTableRow : NSTableRowView
{
public override void DrawSelection (CGRect dirtyRect)
{
if (SelectionHighlightStyle != NSTableViewSelectionHighlightStyle.None) {
NSColor.FromCalibratedWhite (0.65f, 1.0f).SetStroke ();
NSColor.FromCalibratedWhite (0.82f, 1.0f).SetFill ();
var selectionPath = NSBezierPath.FromRoundedRect (dirtyRect, 0, 0);
selectionPath.Fill ();
selectionPath.Stroke ();
}
}
}
如何更改 NSTable 选中行的背景颜色?
这里不错answer,不过是为了方便查看。
现在,我看到的是我可以更改选定的突出显示样式:
MyTAble.SelectionHighlightStyle = NSTableViewSelectionHighlightStyle.Regular;
但是这里只有3个选项;
None = -1L,
Regular,
SourceList
我尝试了以下解决方案:
patientListDelegate.SelectionChanged += (o, e) => {
var r = PatientTableView.SelectedRow;
var v = PatientTableView.GetRowView (r, false);
v.Emphasized = false;
};
它正常工作,但如果我最小化然后再次打开应用程序,仍然显示蓝色
我在 objective-c
中找到了答案Change selection color on view-based NSTableView
这是 C# 实现:
内部代表:
public override NSTableRowView CoreGetRowView (NSTableView tableView, nint row)
{
var rowView = tableView.MakeView ("row", this);
if (rowView == null) {
rowView = new PatientTableRow ();
rowView.Identifier = "row";
}
return rowView as NSTableRowView;
}
和自定义行:
public class PatientTableRow : NSTableRowView
{
public override void DrawSelection (CGRect dirtyRect)
{
if (SelectionHighlightStyle != NSTableViewSelectionHighlightStyle.None) {
NSColor.FromCalibratedWhite (0.65f, 1.0f).SetStroke ();
NSColor.FromCalibratedWhite (0.82f, 1.0f).SetFill ();
var selectionPath = NSBezierPath.FromRoundedRect (dirtyRect, 0, 0);
selectionPath.Fill ();
selectionPath.Stroke ();
}
}
}