小编Jim*_*imi的帖子

如何在Winform DataGridView中创建不同的单元格格式

我有一个绑定到DataTable的DataGridView。
DataTable是所有数值。
要求DataGridView中的每n行中都包含文本,而不是数字值(以便为用户在视觉上分隔各个部分)。

绑定后,我很乐意将此文本数据放入DataTable或DataGridView中,但是我看不到任何一种将文本数据放入其中的方法,因为这两种列格式都需要数字数据-我得到了“都将一个字符串放在一个十进制“错误中。

有什么想法如何更改DataTable或DataGridView中特定行或单元格的格式?

c# datagridview winforms

4
推荐指数
1
解决办法
9894
查看次数

c#,Microsoft Interop Excel,更改选定范围的字体样式

我需要更改 Excel 工作表中某些单元格的字体样式(字体类型)。Excel工作表由Microsoft.Office.Interop.Excel生成

我想将 B3 到 B100 范围更改为 Arial 字体类型。这是我的代码

Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

app.Visible = true;
worksheet = workbook.Sheets["Sheet1"];
worksheet = workbook.ActiveSheet;
worksheet.Name = "Exported from gridview";
worksheet.get_Range("B3", "B100").Cells.Font.FontStyle = "Arial";

for (int i = 1; i < records_datagridview.Columns.Count + 1; i++)
{
   worksheet.Cells[1, i] = records_datagridview.Columns[i - 1].HeaderText;
}

for (int i = 0; i < records_datagridview.Rows.Count; i++)
{
   for (int j = 0; j < records_datagridview.Columns.Count; j++)
   { …
Run Code Online (Sandbox Code Playgroud)

.net c# excel-interop font-style

4
推荐指数
1
解决办法
1万
查看次数

删除图像上绘制的文本的顶部和底部填充

我正在从指定的文本生成图像,但我面临一个问题:我无法删除生成的图像内绘制文本的顶部和底部填充。

我尝试在使用时更改字符串格式Graphics.DrawString(),但我只设法删除了左右填充。

private void button1_Click(object sender, EventArgs e)
{
    Font font = new Font("Arial", 52, FontStyle.Regular);
    Image i = GetTextAsImage(textBox1.Text,400, font, Color.Black, Color.LightGray);
    i.Save("myImage.jpeg", ImageFormat.Jpeg);
}

private Image GetTextAsImage(String text, int widthInPixel, Font textFont, Color textColor, Color backColor)
{
    //first, create a dummy bitmap just to get a graphics object
    Image img = new Bitmap(1, 1);
    Graphics drawing = Graphics.FromImage(img);

    //measure the string to see how big the image needs to be
    SizeF textSize = drawing.MeasureString(text, textFont);

    //free …
Run Code Online (Sandbox Code Playgroud)

.net c# gdi+ winforms

4
推荐指数
1
解决办法
1683
查看次数

如何更改ListView的默认选择颜色?

我正在尝试更改 ListView 中选择栏的默认(蓝色)颜色。
我拒绝使用 ObjectListView 因为我必须更改所有代码。

我搜索过这个主题,并在这里找到了一些答案:
更改 ListView 的背景选择颜色?
但它指向 ObjectListView。

当我之前使用 ListBox 时,这可以根据我的喜好设置选择栏颜色:

  1. OwnerDrawFixed在“属性”下 将“绘制模式”设置为
  2. 将 DrawItem 设置为ListBox1_DrawItemEvents 下

private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    if (e.Index < 0) return;
    //if the item state is selected them change the back color 
    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
        e = new DrawItemEventArgs(e.Graphics,
                                  e.Font,
                                  e.Bounds,
                                  e.Index,
                                  e.State ^ DrawItemState.Selected,
                                  e.ForeColor,
                                  Color.FromArgb(43, 144, 188));//Choose the color

    // Draw the background of the ListBox control for each item. …
Run Code Online (Sandbox Code Playgroud)

.net c# listview selection winforms

4
推荐指数
1
解决办法
2844
查看次数

如何使用滑块控件来调整位图的亮度?

我正在尝试调整 RGB 值,以基本上使图像处理器项目中的图片变暗或变亮。如果在一个 TrackBar 控件上同时包含变暗和变亮功能,并且当滑块在中间设置为 0 时,图像会呈现中性且未更改的图像,这将是一件好事。
然而,我目前仍在尝试弄清楚如何在一个 TrackBar 上只执行一项功能,例如变暗。

在我的项目中放置 TrackBar 控件 ( Min 0, Max 10) 后,我使用该trackbar_scroll事件来检测 TrackBar 何时滚动。
我还对其进行了编码,通过从图像每个像素的 RGB 中减去某个字节值来使图像变暗。
当您向右滑动滚动条时,滚动条成功地使图像变暗,但是当您将轨迹栏向左滑动回到其原始位置时,我也想取消它的变暗。

private void trbBrightness_Scroll(object sender, EventArgs e)
{
    if (bitmapImage == null) return; 

    Byte Red, Green, Blue;
    int iWidth = 320;
    int iHeight = 240;

    for (int i = 0; i < iWidth; i++)
    {
        for (int j = 0; j < iHeight; j++)
        {
            Color pixel = ImageArray[i, j];

            Red = pixel.R; …
Run Code Online (Sandbox Code Playgroud)

.net c# graphics colormatrix winforms

4
推荐指数
1
解决办法
3322
查看次数

如何在标题栏中显示带有下标或上标的文本?

我希望能够在 Windows 窗体或 WPF 窗口的标题栏中显示下标文本。这样做的原因是简单的。我们项目组写了一个分子编辑器:

在此处输入图片说明

我们不只是显示其名称“ACME”,而是希望显示如下内容:

ACME - 编辑 C 6 H 12 Cl

文本带有下标(也可能带有上标)的位置以及控件是否显示在 Windows 窗体或 WPF 主机中。

c# wpf superscript subscript winforms

4
推荐指数
1
解决办法
872
查看次数

如何使用循环在运行时获取属性设置的当前值

我有一个名为的属性,它是通过 Visual Studio 中的属性设置窗口 A设置的值(项目 \xe2\x86\x92 属性 \xe2\x86\x92 设置)。AAA

\n\n

A我可以使用此循环获取该属性的原始值。
\n如果我更改该值,也就是说NewValue,我可以使用以下代码获取新值:

\n\n
Properties.Settings.Default.A\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,在循环内,我不知道如何在不使用语法的情况下获取当前属性值:

\n\n
Properties.Settings.Default.VariableName\n
Run Code Online (Sandbox Code Playgroud)\n\n

例如:

\n\n
Properties.Settings.Default.A= "NewValue";\nProperties.Settings.Default.Save();\nforeach (SettingsProperty _currentProperty in Properties.Settings.Default.Properties)\n{\n    Console.WriteLine(_currentProperty.Name + "," + _currentProperty.DefaultValue.ToString());\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面的循环显示了属性的原始值(旧的默认值是AAA)。

\n\n

我已检查该user.config文件并确保它正在显示NewValue

\n\n

我假设必须有某种方法使用我不知道的属性或方法来引用当前值(也许我应该迭代另一个集合?)。

\n\n

问题是,如何在foreach上面的循环中显示这个新值?

\n

.net c# application-settings winforms

4
推荐指数
1
解决办法
2367
查看次数

如何用自定义标题替换 DataGridView 的 HeaderCells?

当DataGridView 的 已经设置为DataGridViewColumnHeaderCell对象并且还保留之前的 HeaderCell 的文本(设置为 DataTable 相应列的名称)时,何时用自定义替换a HeaderCell(此处:)?CustomDataGridViewColumnHeaderCellDataSourceDataTable

我有一个自定义标头类DataGridView

public class CustomDataGridViewColumnHeaderCell : DataGridViewColumnHeaderCell
{
    // adds a button to the header
}
Run Code Online (Sandbox Code Playgroud)

ADataTable被设置为DataSource,列将自动创建。如何用自定义标题单元格(上述实例)替换默认标题单元格?

更多详情

在此输入图像描述

要解决的问题是,DataGridView需要在其标题单元格中嵌入可点击的按钮,即上面屏幕截图中箭头所指的位置。为此,有一类CustomDataGridViewColumnHeaderCell. 为了显示 中的数据DataGridViewDataTable将 a 指定为其数据源。例如:

myDataGridView.DataSource = myDataTable;
Run Code Online (Sandbox Code Playgroud)

执行此操作后,DataGridView将具有与 中的列相对应的列DataTable。我从默认标题类派生了一个类,以便按钮出现在列标题内。

.net c# datagridview winforms

4
推荐指数
1
解决办法
1733
查看次数

绘制 8bpp 位图时如何使调色板中的颜色透明

我有一个 8bpp 索引位图,带有自定义 256 色调色板,其中调色板中的特定颜色 (Color.PinkColor.Green) 表示透明度。
我可以MakeTransparent(color)在位图上使用该方法(每种颜色两次),但它会将其转换为 32bpp。所以我使用的是:

using var imageAttr = new ImageAttributes();
imageAttr.SetColorKey(pink, pink, ColorAdjustType.Default);
Run Code Online (Sandbox Code Playgroud)

进而

g.DrawImage(bitmap, destRect, X, Y, Width, Height, GraphicsUnit.Pixel, imageAttr);
Run Code Online (Sandbox Code Playgroud)

它按应有的方式绘制位图,但仅对Color.Pink透明颜色进行更改。我怎样才能对第二种颜色(Color.Green)也执行此操作?

c# transparency gdi+ bitmap winforms

4
推荐指数
1
解决办法
816
查看次数

如何检查系统音频是否静音?

我找到了这个答案,建议使用带有以下代码的“ core audio.dll” API

private function getmute() as boolean
    Dim devenum As New MMDeviceEnumerator
    Dim device As MMDevice = devenum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia)
    If device.AudioEndpointVolume.Mute = True Then
        Return True
    Else
        Return False
    End If
End Function
Run Code Online (Sandbox Code Playgroud)

我尝试了该代码,但无法正常工作,无法对其他问题发表评论。

当我尝试上述代码时,以下行将引发异常:

If device.AudioEndpointVolume.Mute = True Then
Run Code Online (Sandbox Code Playgroud)

这是异常消息:

AudioEndpointVolume不是设备的成员。

我已经输入了CoreAudioAPI,还有什么可能是错的?

我在寻找一个VB.NET或一个C#解决方案。

c# vb.net winapi

3
推荐指数
2
解决办法
444
查看次数