小编Jan*_*Jan的帖子

C#将构造函数参数绑定到实例变量

非常常见的情况:我有一个包含多个实例变量的类和一个接受多个参数的构造函数.我能以某种方式将一个绑定到另一个吗?将所有参数分配给实例变量非常冗长,并且是配置约定原则可以(并且应该)涵盖的情况之一.我的示例代码如下所示:

public class myClass
{    
    private object param1;
    private object param2;
    private object param3;
    private object param4;

    public myClass(object param1, object param2, object param3, object param4)
    {
        this.param1 = param1;
        this.param2 = param2;
        this.param3 = param3;
        this.param4 = param4;
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以摆脱这种情况并让C#自动完成它的魔力?

c# constructor

8
推荐指数
2
解决办法
870
查看次数

栅格切割器:将行高限制为窗口大小

我刚刚开始尝试使用网格分裂器并且偶然发现了一个非常奇怪的行为,我似乎无法修复它.显然其他人有类似的问题(根据谷歌),但没有有用的评论.

我有一个2行的网格.在启动时,底部的一个有Hight250个.顶行用剩下的*.当我使用拆分器调整行的大小时,行为与顶行的预期一致.但是当我向上拖动分割器并经过程序窗口时,底行的内容将从窗口中掉出(=向下移动直到它消失).我希望我不能使每一行都大于父容器.

<Grid x:Name="grid_main" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition MinHeight="250"  Height="250"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <GridSplitter x:Name="splitter" 
        ResizeDirection="Rows" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Width="Auto"
        Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0" ResizeBehavior="BasedOnAlignment" />
    <Grid Grid.Column="0" Grid.Row="0">
    </Grid>
    <Grid Grid.Column="0" Grid.Row="1">              
    </Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这是我的代码.两行的内容再次托管在网格中,并且为了简单起见已被删除.再次:调整顶行的大小可以正常工作.但是底行可以调整为无穷大.如果我硬编码,它会按预期工作MaxHeight.但这取决于窗口大小.

c# wpf grid resize gridsplitter

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

C#:Superclass在upcast之后仍然有子类信息

我有两种类型:BaseQuestionQuestion.Question从中继承了一些属性BaseQuestion.现在我已经创建了一个Web API来BaseQuestion提供.该Question数据类型都有,我不想提供额外的属性.我有一个检索a的方法,Question我的初步计划只是隐式地将其转换为BaseQuestion.我认为它会丢失所有我不想访问的额外属性,我可以返回它.嗯,事实并非如此.这就是我做的:

Question q = allQuestions[0];
BaseQuestion bq = q;
string type = bq.GetType().ToString();
Run Code Online (Sandbox Code Playgroud)

bq的类型仍然是"问题".我无法访问BaseQuestion属性,但我仍然可以在调试器中看到它们,它们位于我发送给客户端的JSON输出中.

关于如何"强制"bq为类型BaseQuestion而不具有子类中定义的任何属性的任何想法?

c# inheritance upcasting

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

从excel工作簿中删除非空工作表

我想从 Excel 工作簿中删除一些工作表。当我的程序加载时,它读取工作簿中的工作表,将它们列在网格视图中,用户可以在其中选择输出文件中应包含的工作表。当用户点击保存按钮时,我会根据选择删除工作表并保存工作簿。所有这些都有效。除非工作表中有实际内容。这将删除空工作表,但不会删除包含内容的工作表。

foreach (var item in _view.Sheets)
{
    Exc.Worksheet ws = wb.Worksheets[item.Name];
    if (!item.Include)
    {
        ws.Delete();
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么线索吗?

c# excel-interop

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

动态向表中添加行

目前,我正在尝试创建一个表,其内容应该由子类创建(查询 RESTful Web 服务的结果)。我已经为此工作了很长一段时间,但似乎无法让它发挥作用。我尝试了很多不同的解决方案。

  • 在子类中创建表并将其添加到 Page.Controls。这让我“无法修改控件集合,因为控件包含代码块(即 <% ... %>)”。这完全没有意义。
  • 我试图在页面上创建一个空表并将其句柄传递给负责添加行的子类。注意到发生了。
  • 我试图返回一个 TableRowCollection 并将其分配给之前创建的(空)表。什么都没有发生。
  • 现在我只想在表格中添加一行和一个单元格(朝着我需要的方向迈出一步)。甚至那也行不通。请找到附件的代码:

    TableRow row = new TableRow();
    table.Rows.Add(row);
    
    TableCell cell = new TableCell();
    row.Cells.Add(cell);
    
    cell.Controls.Add(new TextBox());
    
    Run Code Online (Sandbox Code Playgroud)

该表简单而空:

<asp:Table ID="table" runat="server" /> 
Run Code Online (Sandbox Code Playgroud)

我的浏览器显示的源代码如下所示:

<table id="table">
</table> 
Run Code Online (Sandbox Code Playgroud)

我一直在网上看无数的例子,都是这样的。我想这只是某个地方的一个小问题,但我一直无法弄清楚。现在,我愿意向所有能够提供解决此烂摊子的提示的人表示终生的感激之情。

asp.net html-table

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

Datagrid中的NumericUpDown

我有一个WPF窗口,其中包含一堆数字.或者使用更好的单词:每列绑定到一个int属性.现在我希望有一个很好的方法来改变一些数字,我希望我可以使用numericUpDown控件.任何提示将不胜感激!

c# wpf datagrid numericupdown

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

创建自定义参数选择

我有一个方法,需要一个参数来区分几个不同的场景.我可以传递一个字符串,并希望我(或将来将使用该类的任何人)将使用其中一个已识别的命令.我宁愿有这样的结构:

方法声明:

myMethod(myOption opt){ ... }
Run Code Online (Sandbox Code Playgroud)

这个电话应该是这样的:

myMethod(myOption.option1);
Run Code Online (Sandbox Code Playgroud)

在方法中我应该能够这样做:

if (opt == myOption.option1){ ... }
Run Code Online (Sandbox Code Playgroud)

当我传递按钮或图标配置时,我相信这是Message Box的工作方式.

我经历了很多实验并经常搜索,但我没有找到任何东西.也许这是因为我没有找到正确的关键字组合来提供谷歌.

谢谢你的帮助!

c# parameters

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