请教一个c#中实现word工具栏中字体颜色按钮的问题。 word中当用工具栏中的字体颜色按钮选择颜色后,按钮上“A”下面的一条颜色会随之改变,请问这个功能是怎么实现的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 internal class ColorPopup { XtraTabControl tabControl; Color fResultColor; BarItem itemColor; PopupControlContainer container; public ColorPopup(BarButtonItem item, Color initColor) { this.container = new PopupControlContainer(); item.DropDownControl = container; this.itemColor = item; this.fResultColor = initColor; this.tabControl = CreateTabControl(); this.tabControl.TabStop = false; this.tabControl.TabPages.AddRange(new XtraTabPage[] { new XtraTabPage(), new XtraTabPage(), new XtraTabPage() }); for (int i = 0; i < tabControl.TabPages.Count; i++) SetTabPageProperties(i); tabControl.Dock = DockStyle.Fill; this.container.Controls.AddRange(new System.Windows.Forms.Control[] { tabControl }); this.container.Size = CalcFormSize(); OnEnterColor(fResultColor); } private XtraTabControl CreateTabControl() { return new XtraTabControl(); } private ColorListBox CreateColorListBox() { return new ColorListBox(); } private void SetTabPageProperties(int pageIndex) { XtraTabPage tabPage = this.tabControl.TabPages[pageIndex]; ColorListBox colorBox = null; BaseControl control = null; switch (pageIndex) { case 0: tabPage.Text = Localizer.Active.GetLocalizedString(StringId.ColorTabCustom); control = new ColorCellsControl(null); DevExpress.XtraEditors.Repository.RepositoryItemColorEdit rItem = new DevExpress.XtraEditors.Repository.RepositoryItemColorEdit(); rItem.ShowColorDialog = false; (control as ColorCellsControl).Properties = rItem; (control as ColorCellsControl).EnterColor += new EnterColorEventHandler(OnEnterColor); control.Size = ColorCellsControlViewInfo.BestSize; break; case 1: tabPage.Text = Localizer.Active.GetLocalizedString(StringId.ColorTabWeb); colorBox = CreateColorListBox(); colorBox.Items.AddRange(ColorListBoxViewInfo.WebColors); colorBox.EnterColor += new EnterColorEventHandler(OnEnterColor); control = colorBox; break; case 2: tabPage.Text = Localizer.Active.GetLocalizedString(StringId.ColorTabSystem); colorBox = CreateColorListBox(); colorBox.Items.AddRange(ColorListBoxViewInfo.SystemColors); colorBox.EnterColor += new EnterColorEventHandler(OnEnterColor); control = colorBox; break; } control.Dock = DockStyle.Fill; control.BorderStyle = BorderStyles.NoBorder; control.LookAndFeel.ParentLookAndFeel = itemColor.Manager.GetController().LookAndFeel; tabPage.Controls.Add(control); } private void OnEnterColor(object sender, EnterColorEventArgs e) { fResultColor = e.Color; container.HidePopup(); OnEnterColor(e.Color); } private void OnEnterColor(Color clr) { container.HidePopup(); int imIndex = itemColor.ImageIndex; ImageCollection iml = itemColor.Images as ImageCollection; Image im = iml.Images[imIndex]; Graphics g = Graphics.FromImage(im); Rectangle r = new Rectangle(0, 12, 16, 4); g.FillRectangle(new SolidBrush(clr), r); if (imIndex == iml.Images.Count - 1) iml.Images.RemoveAt(imIndex); g.Dispose(); iml.Images.Add(im); itemColor.ImageIndex = iml.Images.Count - 1; itemColor.PerformClick(); } private ColorCellsControl CellsControl { get { return ((ColorCellsControl)tabControl.TabPages[0].Controls[0]); } } private string CustomColorsName { get { return "CustomColors"; } } public Color ResultColor { get { return fResultColor; } } private Size CalcFormSize() { Size size = ColorCellsControlViewInfo.BestSize; size.Height = 113; return tabControl.CalcSizeByPageClient(size); } }这个是Dev的,基本思路是点击下拉按钮(不知道自带的工具条有没有),弹出下拉颜色选择窗体,选择完毕后,修改对应的图标,在其下方画一条相应颜色条。 谢谢回复,不知道word是怎样实现这个功能的! 解决了,当选择颜色后根据选择的颜色在按钮的Paint事件里画一条颜色线段即可。不知道Word是不是这样做的! 网页submit后的返回值获取 请个如何将dataGridView(或DataTable)的数据保存到数据库 什么是WEB SERVICE? DateTime日期格式化 急!!请高手帮忙啊!!!关于session问题 关于 process 问题,达人快进来! 杀掉Word进程 高手帮个忙啊,VS2005环境下如何获得一个随即变量i? 我从webservice 中如何得到当前webservice的路径 [急]关于VS2008项目发布的问题 求助啊,关于单机版程序现需要共享。 C#操作Excel时,单元格自动填充(AutoFill)的问题
{
XtraTabControl tabControl;
Color fResultColor;
BarItem itemColor;
PopupControlContainer container;
public ColorPopup(BarButtonItem item, Color initColor)
{
this.container = new PopupControlContainer();
item.DropDownControl = container;
this.itemColor = item;
this.fResultColor = initColor;
this.tabControl = CreateTabControl();
this.tabControl.TabStop = false;
this.tabControl.TabPages.AddRange(new XtraTabPage[] { new XtraTabPage(), new XtraTabPage(), new XtraTabPage() });
for (int i = 0; i < tabControl.TabPages.Count; i++) SetTabPageProperties(i);
tabControl.Dock = DockStyle.Fill;
this.container.Controls.AddRange(new System.Windows.Forms.Control[] { tabControl });
this.container.Size = CalcFormSize();
OnEnterColor(fResultColor);
}
private XtraTabControl CreateTabControl() { return new XtraTabControl(); }
private ColorListBox CreateColorListBox() { return new ColorListBox(); }
private void SetTabPageProperties(int pageIndex)
{
XtraTabPage tabPage = this.tabControl.TabPages[pageIndex];
ColorListBox colorBox = null;
BaseControl control = null;
switch (pageIndex)
{
case 0:
tabPage.Text = Localizer.Active.GetLocalizedString(StringId.ColorTabCustom);
control = new ColorCellsControl(null);
DevExpress.XtraEditors.Repository.RepositoryItemColorEdit rItem = new DevExpress.XtraEditors.Repository.RepositoryItemColorEdit();
rItem.ShowColorDialog = false;
(control as ColorCellsControl).Properties = rItem;
(control as ColorCellsControl).EnterColor += new EnterColorEventHandler(OnEnterColor);
control.Size = ColorCellsControlViewInfo.BestSize;
break;
case 1:
tabPage.Text = Localizer.Active.GetLocalizedString(StringId.ColorTabWeb);
colorBox = CreateColorListBox();
colorBox.Items.AddRange(ColorListBoxViewInfo.WebColors);
colorBox.EnterColor += new EnterColorEventHandler(OnEnterColor);
control = colorBox;
break;
case 2:
tabPage.Text = Localizer.Active.GetLocalizedString(StringId.ColorTabSystem);
colorBox = CreateColorListBox();
colorBox.Items.AddRange(ColorListBoxViewInfo.SystemColors);
colorBox.EnterColor += new EnterColorEventHandler(OnEnterColor);
control = colorBox;
break;
}
control.Dock = DockStyle.Fill;
control.BorderStyle = BorderStyles.NoBorder;
control.LookAndFeel.ParentLookAndFeel = itemColor.Manager.GetController().LookAndFeel;
tabPage.Controls.Add(control);
}
private void OnEnterColor(object sender, EnterColorEventArgs e)
{
fResultColor = e.Color;
container.HidePopup();
OnEnterColor(e.Color);
}
private void OnEnterColor(Color clr)
{
container.HidePopup();
int imIndex = itemColor.ImageIndex;
ImageCollection iml = itemColor.Images as ImageCollection;
Image im = iml.Images[imIndex];
Graphics g = Graphics.FromImage(im);
Rectangle r = new Rectangle(0, 12, 16, 4);
g.FillRectangle(new SolidBrush(clr), r);
if (imIndex == iml.Images.Count - 1)
iml.Images.RemoveAt(imIndex);
g.Dispose();
iml.Images.Add(im);
itemColor.ImageIndex = iml.Images.Count - 1;
itemColor.PerformClick();
}
private ColorCellsControl CellsControl { get { return ((ColorCellsControl)tabControl.TabPages[0].Controls[0]); } }
private string CustomColorsName { get { return "CustomColors"; } }
public Color ResultColor { get { return fResultColor; } } private Size CalcFormSize()
{
Size size = ColorCellsControlViewInfo.BestSize;
size.Height = 113;
return tabControl.CalcSizeByPageClient(size);
}
}
这个是Dev的,基本思路是点击下拉按钮(不知道自带的工具条有没有),弹出下拉颜色选择窗体,选择完毕后,修改对应的图标,在其下方画一条相应颜色条。