小编And*_*res的帖子

使用c#winform打印和制作报告

我在Delphi QuickReport中用来创建报表和打印.在.NET C#中我可以用它来做什么?

我向我的项目(Winforms应用程序)添加了一些报告元素(Microsoft报告和Crystal报告),但我看到的是,我只能从数据库中插入数据.我想要的是使用在运行时创建的对象的值.这是因为我的报告实际上包含收据和发票.

哪个是最适合我需要的工具?

c# printing report winforms

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

在C#Winforms中的DataGridViewCell内绘制一个实心圆或矩形

我想在一个中心画一个小圆圈DataGridViewCell.矩形也可以做到这一点.我假设我必须在CellPainting事件中这样做.

我试过这个:

if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
        {                
            if (dgv_Cuotas.Columns[e.ColumnIndex].Name == "Seleccionar" && Convert.ToBoolean(dgv_Cuotas.Rows[e.RowIndex].Cells["pagada"].Value) == true)
            {
                e.CellStyle.BackColor = Color.LightGray; ;
                e.PaintBackground(e.ClipBounds, true);
                e.Handled = true;
            }
        }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

它绘制了整个单元格,我只想要一个小圆圈或矩形,如下图所示:

在此输入图像描述

我怎样才能做到这一点?使用DataGridViewImageCell不是一个选项,因为我有格式错误.我只是可以将DataGridViewCheckBoxCell更改为DataGridViewTextboxCell.

编辑: 我可以将其更改为DataGridViewImageCell !! 不知道之前发生了什么,但我仍然无法在那里加载图像.我只得到一个红十字的白色方块(没有图像图标).这是我的代码:

dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"] = new DataGridViewImageCell();
dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"].Value = Properties.Resources.punto_verde;
dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"].Style.ForeColor = Color.White;
dgv_Cuotas.Rows[row.Index].Cells["Seleccionar"].Style.SelectionForeColor = Color.White;
Run Code Online (Sandbox Code Playgroud)

c# geometry datagridview draw winforms

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

WPF边框形状

我想创建一个类似Lync 2013的弹出窗口:

在此输入图像描述

我感兴趣的是用这个小插图形状创建一个控件.

我尝试在内部创建一个带有Canvas的UserControl,并创建一个带有形状的Path.但是我没有发现Canvas非常友好,所以我想知道我是否可以通过"边框"控件"玩"来实现这一点,以便只放置一个边框,然后放入一个网格.

这可能吗?有人可以帮助我走上正轨吗?

c# wpf

7
推荐指数
1
解决办法
4110
查看次数

为几个HttpStatusCodes设置一个ProducesResponseType typeof

我正在设置ProducesResponseType,以便将其记录在Swagger中.

如果响应成功(OK => 200),则会产生IEnumerable.

[ProducesResponseType(typeof(IEnumerable<MyModel>), 200)]
Run Code Online (Sandbox Code Playgroud)

但是当我得到异常时,我会抓住它,然后生成我的自定义APIError类的对象.当我填充对象时,我可以设置不同的HttpStatusCodes,但最后,我想要的是能够设置ProducesResponseType是我所有剩余HttpStatusCodes的APIError类.我的意思是,我可以得到BadRequest,ServerInternalError,Forbidden等,但所有都会有相同的响应类型(ApiError).有没有办法为所有错误http代码设置这行代码?或者我需要逐个设置它?

[ProducesResponseType(typeof(ApiError), ???)]
Run Code Online (Sandbox Code Playgroud)

最终结果应如下所示:

[ProducesResponseType(typeof(IEnumerable<MyModel>), 200)]
[ProducesResponseType(typeof(ApiError), AllFailureHttpCodes)]
Run Code Online (Sandbox Code Playgroud)

c# http-status-codes asp.net-web-api swagger asp.net-core

7
推荐指数
1
解决办法
9449
查看次数

Vue JS - 将选择选项值绑定到v-for内部

我有一个填充了一组对象的表(mappedMenus).

MappedMenus是一个名为"menuTypeId"的类.

此属性"menuTypeId"的可能值在MenuTypes对象数组中设置,具有"id"和"name"属性.

使用这些MenuTypes对象,我填充每行的选择.

我遇到的问题是,我不知道如何将每个MappedMenu对象的"menuTypeId"属性绑定到其选择的选定选项.

正如您在我的代码中看到的那样,我使用mappedMenus 在tr中执行v-for .

对于每一个对象,我有一个行选择的选项.使用另一个名为menuTypes的数组填充选项.

然后我尝试将select与MappedMenu对象绑定在循环中(e.menuTypeId),然后绑定选项中的值.我没有得到以下代码的任何错误,但我也不起作用.

<table id="#divTable" class="uk-table">
    <thead>
        <tr>
            <th>Menu Type</th>
        </tr>
    </thead>
    <tbody>
        <tr v-for="e in mappedMenus">
            <td>
                <select class="uk-select" v-model="e.menuTypeId">
                    <option v-for="m in menuTypes" v-bind:value="e.menuTypeId">{{m.name}}</option>
                </select>
            </td>
        </tr>
    </tbody>
</table>

<script>
var updateMenuVM = new Vue({
    el: '#divTable',
    data: {
        menuTypes: [{ id: 1, name: 'Principal' }, { id: 2, name: 'Dessert' }, { id: 3, name: 'Drink' }],
        mappedMenus: [{ menuName: 'Hamburger', menuTypeId: …
Run Code Online (Sandbox Code Playgroud)

vuejs2

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

隐藏一些datagridview复选框单元格

我有datagridview一个贷款显示分期付款.我创建了一个datagridviewcheckbox列,然后我可以选择我要支付的所有分期付款.

这是datagrid的一个屏幕:

在此输入图像描述

我的问题是我需要禁用付费插件的复选框.在这种情况下,当"Restante"(剩下要付钱)是= 0.

我读了一些他们使用paint事件的帖子没有显示复选框单元格,但我不喜欢那个解决方案.我想隐藏了复选框单元格,但我不知道是否可以这样做.

多数民众赞成我的尝试:

foreach (DataGridViewRow row in dgv_Cuotas.Rows)
            {
                if (Convert.ToDecimal(dgv_Cuotas.Rows[row.Index].Cells[17].Value) == 0)
                {
                    dgv_Cuotas.Rows[row.Index].Cells[16].Visible = false;
                }
            }
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,我得到一个编译器错误消息,说该属性是只读的.

有人知道如何将复选框单元格设置为不可见吗?

为了以防万一,我附上了DataGridViewCheckboxColumn创建代码:

DataGridViewCheckBoxColumn chbox = new DataGridViewCheckBoxColumn();
            {
                chbox.CellTemplate = new DataGridViewCheckBoxCell();
                chbox.HeaderText = "";
                chbox.Name = "Seleccionar";
                chbox.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                chbox.FlatStyle = FlatStyle.Standard;
            }
            dgv_Cuotas.Columns.Insert(16, chbox);
            dgv_Cuotas.Columns[16].DisplayIndex = 0;
Run Code Online (Sandbox Code Playgroud)

编辑:

一些考虑:

我使用单元格内容点击事件来处理复选框,所以readonly不会工作.我想要的是隐藏复选框:

private void dgv_Cuotas_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex == -1)
            return;
        if (dgv_Cuotas.Columns[e.ColumnIndex].Name == "Seleccionar") …
Run Code Online (Sandbox Code Playgroud)

c# datagridview datagridviewcheckboxcell winforms

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

实体框架查询过滤实现以获得最佳性能

正如标题所说,我将实体框架4.0用于财务应用程序.我有一个winform,我列出了我的所有支票(支票).但在该形式中,用户可以指定一些过滤器.

在此输入图像描述

如果用户没有应用任何过滤器,我可以像这样进行查询:

lista_cheques = db.Cheque.Include("Operacion").Include("Cliente").ToList();
datagridview.Datasource = lista_cheques;
Run Code Online (Sandbox Code Playgroud)

这很简单.但是当它应用过滤器时,问题会变得更大.

如您所见,用户可以使用过滤器查看特定客户的检查(检查),日期,银行,CUIT号,检查状态等.

现在,我的问题与查询中的性能有关.

我正在考虑将过滤器分开,如下所示:

lista_cheques = db.Cheque.Include("Operacion").Include("Cliente").Where(x => x.fecha_deposito == fecha).ToList();
lista_cheques = lista_cheques.Where(x => x.banco.id_banco = banco).ToList();
lista_cheques = lista_cheques.Where(x => x.Operacion.Cliente.id_cliente = id_cliente).ToList();
Run Code Online (Sandbox Code Playgroud)

翻译:fecha是日期Operacion是一组支票Cliente是客户.

通过这种方式,我正在进行查询,然后是来自该查询结果的查询,然后是来自该新结果的新查询.

我认为这种方式可能会产生很大的性能问题.我知道SQL Server优化查询.因此,如果我正在进行碎片查询,则优化器无法正常工作.

我想到的另一种方式,但它非常繁琐,是创建一个大的查询来处理每个可能的过滤器选择.

例如,另一个例子是这样的:

lista_cheques = db.Cheque.Include("Operacion").Include("Cliente").Where(x => x.fecha_deposito == fecha && x.banco.id_banco = banco && x.Operacion.Cliente.id_cliente = id_cliente).ToList();
Run Code Online (Sandbox Code Playgroud)

最大的问题是我需要很多组合才能处理所有过滤器的可能性.

好的,现在,我会在第一个代码示例中遇到性能问题吗?我在那里对数据库做了一个大的查询,然后我在对象列表中进行查询(我认为会更快).我是这个ORM的新手,这个列表必须处理很多注册表..

我有人可以给我一些建议吗?我弄得很乱,希望你能理解......

c# performance winforms entity-framework-4

2
推荐指数
1
解决办法
829
查看次数

Winform C#Datagridview绘图标题

我想使用c#在Windows窗体中自定义我的datagridviews.我想要做的是使用我制作的渐变绘制datagrid标题:

public void Colorear_Barra_abajo(object sender, PaintEventArgs e)
    {
        Rectangle r = new Rectangle(0,0, panel_Borde_abajo.Width, panel_Borde_abajo.Height);

        if (r.Width > 0 && r.Height > 0)
        {
            Color c1 = Color.FromArgb(255, 54, 54, 54);
            Color c2 = Color.FromArgb(255, 62, 62, 62);
            Color c3 = Color.FromArgb(255, 98, 98, 98);

            LinearGradientBrush br = new LinearGradientBrush(r, c1, c3, 90, true);
            ColorBlend cb = new ColorBlend();
            cb.Positions = new[] { 0, (float)0.5, 1 };
            cb.Colors = new[] { c1, c2 , c3 };
            br.InterpolationColors = cb;

            // …
Run Code Online (Sandbox Code Playgroud)

c# datagridview paint winforms

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

在 Delphi 异常中获取 MS SQL Server 异常用户消息

我正在使用 Datasnap.DBClient 从我的 Delphi 应用程序访问 SQL Server 数据库。

我有一个记录器记录我的应用程序中的每个异常,但我发现 SQL 异常消息真的很不友好。

示例:当我在 Delphi 中捕获 SQL 异常时,我得到的消息是:

EOleException:SQL 状态:42S22,SQL 错误代码:207

如果我在 SQL Profiler 中打开跟踪,我会收到两条消息:

第一个异常与应用程序显示的消息相同:

例外:错误:207,严重性:16,状态:1

第二个,是:

用户错误消息:无效的列名“Column1”

是否有可能从我的 Delphi 应用程序中捕获的异常中获取此UserErrorMessage

sql-server delphi exception

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

在尝试除块之前,在Delphi Application.OnException中捕获异常

我想记录delphi应用程序中引发的每个异常.为此,我在项目源代码中用我自己的一个覆盖了Application.OnException事件.

program Project;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Logger in 'Logger.pas',
  JCLDebugHandler in 'JCLDebugHandler.pas';

{$R *.res}

begin
   Application.Initialize;
   Application.OnException := TApplicationException.AppException;
   Application.MainFormOnTaskbar := True;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

这很好用,但我没有抓住这个解决方案,在try-except块中捕获了异常.

当在except块中捕获异常时,它不会触发Application.OnException事件.

有没有办法首先在Application.OnException事件而不是except块中捕获它?

delphi try-catch onexception

0
推荐指数
1
解决办法
1373
查看次数