我有一个奇怪的问题,我不知道这是否是GroupBox/TabControl中.Net DataGridView的默认行为.
我从头开始创建了一个新的WinForm项目,并创建了一个GroupBox(更改了文本样式).像这样:
alt text http://www.freeimagehosting.net/uploads/65f5f2762d.png
然后,我创建了一个简单的DataGridView,根本没有字体样式,如下所示:
alt text http://www.freeimagehosting.net/uploads/09f55f951a.png
然后,在设计模式下,我在GroupBox中拖动了DataGridView,这种魔法恰好发生了:
alt text http://www.freeimagehosting.net/uploads/d0334132f0.png
我的问题是,我可以禁用此行为吗?因为如果我在GroupBox外部移动DataGridView样式然后将其拖入,丢失所有样式.
仅供记录,此表格根本没有任何代码.
提前致谢.
我继承了Delphi本机控件的TGroupBox,并重写了它的Paint方法来绘制圆角矩形。
procedure TclTransparentGroupBox.CreateParams(var params : TCreateParams);
begin
inherited;
Params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
end;
Run Code Online (Sandbox Code Playgroud)
覆盖创建参数后,Paint方法如下。
procedure TclTransparentGroupBox.Paint;
begin
// Draw the rounded rect to show the group box bounds
Canvas.Pen.Color := clWindowFrame;
Canvas.RoundRect(5, 15, ClientRect.Right - 5, ClientRect.Bottom - 5, 10, 10);
if Caption <> EmptyStr then
begin
Canvas.Brush.Style := bsClear;
Canvas.TextOut(10, 0, Caption);
end;
end;
Run Code Online (Sandbox Code Playgroud)
我面临的主要问题是,我在透明组框顶部没有几个标签。当我打开表单时,标签看起来很好,但是当文本更改时,标签的某些边界矩形将可见。这在透明框的顶部看起来很奇怪。
即使当我调整表单大小时,组框本身也会消失,当我将焦点更改到另一个应用程序并恢复我的应用程序时,组框会自动绘制。
我在绘画方面缺少任何东西吗?我需要照顾的任何Windows消息???
在此先感谢拉胡尔
我想使用WPF groupbox控件实现这样的接口

有没有办法用WPF组框控件实现这样的界面?
拿一个GroupBox,放在Label里面说然后设置AutoSizeMode = GrowAndShrink和AutoSize = true.
会出现两个问题:
Label底部和底部之间存在巨大差距GroupBox(几乎足以适应另一个Labellol);AutoSize不尊重GroupBox.Text财产.问题是如何GroupBox.AutoSize正常工作?正确的意思是:最小宽度应该足够适合GroupBox.Text,不明原因下面应该没有间隙(它不是Margin,也不Padding是看起来很丑).
我已经尝试测量字符串长度OnPaint并在MinimumSize那里设置.它有效,但我对此有疑问,好像我想MinimumSize稍后实际设置- 它会在重绘后丢失.
更新,这里是截图:

我在具有表单的Windows应用程序中工作.此表单包含一个具有一些复选框的组框.我已将此组框设置为禁用.现在我的问题是复选框文本的前色.它变成浅灰色,如下图所示.

如何更改复选框文本的前景颜色,使其看起来不像禁用(浅灰色).
我正在使用WinForms.在我的形式我有一个GroupBox.这是一个自定义组框.我想要一个透明的背景groupbox.我遇到问题创建透明背景groupbox问题这个代码是我在将组框设置backcolor为透明时继续出错.
错误:控件不支持透明背景颜色.
g.Clear(BackColor = Color.Transparent); (这是给我问题的那条线)
private void DrawGroupBox(GroupBox box, Graphics g, Color textColor, Color borderColor)
{
if (box != null)
{
Brush textBrush = new SolidBrush(textColor);
Brush borderBrush = new SolidBrush(borderColor);
Pen borderPen = new Pen(borderBrush);
SizeF strSize = g.MeasureString(box.Text, box.Font);
Rectangle rect = new Rectangle(box.ClientRectangle.X,
box.ClientRectangle.Y + (int)(strSize.Height / 2),
box.ClientRectangle.Width - 1,
box.ClientRectangle.Height - (int)(strSize.Height / 2) - 1);
// Clear text and border
g.Clear(BackColor …Run Code Online (Sandbox Code Playgroud) 我有一个QGroupBox。根据上下文的不同,其标题可能是多余的(显示在GUI的其他位置),因此我需要使好像QGroupBox不在这里。...但是我必须保留其内容可见(所以我不想打电话QGroupBox::hide())!
我需要在运行时动态地执行此操作,并希望避免创建/销毁QGroupBox+使其内容重新父代化。
到目前为止我尝试过的是:
QGroupBox 可见:
QGroupBox::setTitle("") 删除文本。 QGroupBox::setFlat(true) 使框架成为一行。我最终得出以下结论:
还不错...但是一行仍然保留....有没有办法完全隐藏QGroupBox框架但保持其内容可见?
WinForms GroupBox 控件不支持 MouseMove(或者至少不支持),我不明白为什么。
由于它是 Control 的后代,因此它确实具有 MouseMove 事件,但 GroupBox 使用 显式重新引入它Browsable(false),因此它不会显示在属性网格中。您可以在运行时挂钩 MouseMove 事件,有时它会起作用 - 只要 FlatStyle 保留为 Standard。如果 GroupBox 的 FlatStyle 设置为 System,则根本不会触发 MouseMove 事件。
Reflector没有给我任何线索。GroupBox 构造函数似乎没有设置任何奇怪的控件样式,并且 GroupBox 没有做任何愚蠢的事情,例如覆盖 MouseMove 和无法调用基类。
这似乎也是 WinForms 特有的限制,因为 Delphi 组框支持 OnMouseMove 就很好。 更正:与 Delphi 的比较无效。Delphi 组框实际上并不是标准的 BM_GROUPBOX 控件;它们只是被绘制成看起来像组框,而实际上并没有继承像这样的奇怪的组框行为。因此,这很可能是 Windows 组框控件的限制,尽管我还没有在任何地方看到它的记录。
为什么 WinForms GroupBox 不支持 MouseMove?
我刚刚开始使用 GroupBoxes,我只是想知道为什么我不能让我的角变得尖锐,就好像它是一个矩形一样。我在网上看到过一些,它们的角不是圆的。这是为什么?
<GroupBox x:Name="howTOGroupBox" BorderBrush="White" Foreground="White" Header="How To" HorizontalAlignment="Left" Margin="88,86,0,0" VerticalAlignment="Top" Height="79" Width="221" BorderThickness="1"/>
Run Code Online (Sandbox Code Playgroud)
我需要将 GroupBox Header 的第一部分加粗,另一部分不加粗。这是我试图实现的目标:
学生(最多:32)
<GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Margin="40, 80, 40, 80">
<GroupBox.Header>
<Span FontWeight="Bold">Students</Span>
(Max: 32)
</GroupBox.Header>
<StackPanel>
...
Run Code Online (Sandbox Code Playgroud)
这给了我错误:不止一次设置了属性“Header”。
我知道它适用于 TextBlocks,但我不能让它发生在 GroupBox Headers 上:
<TextBlock>
<Span FontWeight="Bold">Students</Span>
<Span>(Max: 32)</Span>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
谢谢。
groupbox ×10
c# ×5
winforms ×4
wpf ×3
.net ×2
alignment ×1
autosize ×1
checkbox ×1
coding-style ×1
controls ×1
datagridview ×1
delphi ×1
delphi-6 ×1
header ×1
mouseevent ×1
qt ×1
styles ×1
transparency ×1
xaml ×1