小编Ray*_*Ray的帖子

如何在不事先知道类型的情况下反序列化XML?

说我有几个这样的基本对象:

[Serializable]
public class Base
{

    public string Property1 { get; set; }
    public int Property2 { get; set; }
}

[Serializable]
public class Sub: Base
{
    public List<string> Property3 { get; set; }

    public Sub():base()
    {
        Property3 = new List<string>();
    }        
}
Run Code Online (Sandbox Code Playgroud)

我像这样序列化它们:

Sub s = new Sub {Property1 = "subtest", Property2 = 1000};
s.Property3.Add("item 1");
s.Property3.Add("item 2");

XmlSerializer sFormater = new XmlSerializer(typeof(Sub));
using (FileStream fStream = new FileStream("SubData.xml", 
    FileMode.Create, FileAccess.Write, FileShare.None))
{
    sFormater.Serialize(fStream, s);
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能反序化它们,以便我找回正确的课程?

就像在,我想要这样的东西

XmlSerializer …
Run Code Online (Sandbox Code Playgroud)

.net serialization xml-serialization

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

滚动ListViewItem位于ListView的顶部

在WPF中,我知道我可以用来ListView.ScrollIntoView将特定项目滚动到视图中,但它总是会进行最少量的滚动,以便显示项目.

如何使其滚动以便我想要显示的项目滚动到ListView的顶部?

我曾经考虑过两次调用ScrollIntoView,一次是针对我想要的项目,一次针对最后显示的项目,但我不知道如何找出最后显示的项目.

wpf listview scroll

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

测试IEnumerable <T>是否包含1个元素而不计算或使用Single

如何找到我的列表中是否包含一个且只有一个项目没有CountSingle

可能有效的Linq Enumerable的'Count()== 1'测试

.net linq

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

允许调整TextBox的大小,但不要增加用户输入

我在窗口中定义了一个TextBox,如下所示:

<Window x:Class="NS.MainWindow"
    ...
    SizeToContent="WidthAndHeight">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
            <ColumnDefinition MinWidth="200" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition MinHeight="50" />
        </Grid.RowDefinitions>
        <TextBlock Grid.Column="0" Grid.Row="0">Description:</TextBlock>

        <TextBox Grid.Column="1" Grid.Row="0" TextWrapping="WrapWithOverflow" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

问题是,当用户键入TextBox时,它会向右扩展,因为只设置了MinWidth.我真正想要的是要包装到下一行的文本.如果我将列上的MinWidth更改为Width,我可以这样做.但是,如果我这样做,那么在调整Window大小时TextBox不再调整大小.

有没有办法可以兼顾两者?(即仅在Window调整大小时调整大小,否则换行)

wpf textbox

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

WPF列表框和全选

我想创建一个简单的ListBox并将SelectAll作为上下文菜单项.然而,似乎ListBox对SelectAll有一些内置的处理,我无法正常工作,但是干扰了我实现SelectAll的尝试.

我的整个XAML是这样的:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.CommandBindings>
        <CommandBinding Command="ApplicationCommands.SelectAll"
                        Executed="SelectAllExecuted" />
    </Window.CommandBindings>
    <DockPanel>
        <CheckBox DockPanel.Dock="Top">My Checkbox</CheckBox>
        <ListBox Name="listBox" SelectionMode="Multiple">
            <ListBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Command="ApplicationCommands.SelectAll" />
                </ContextMenu>
            </ListBox.ContextMenu>
        </ListBox>                
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

SelectAllExecuted就是这样的:

private void SelectAllExecuted(object sender, ExecutedRoutedEventArgs e)
{
    listBox.SelectAll();
}
Run Code Online (Sandbox Code Playgroud)

如果列表框不在焦点上,则控制+ A有效.上下文菜单项正常工作.但是如果列表框是集中的,Control + A拒绝工作.

我觉得我正在与列表框作斗争,但我不应该这样做.

编辑:似乎我的整个问题都在于Multiple SelectionMode.如果我将它设置为Extended,则一切正常,但我不希望它在扩展模式下.

wpf command listbox selectall

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

什么时候SqlCommand.ExecuteReader()会返回null?

当使用调用SqlCommand.ExecuteReader()方法时,ReSharper告诉我,当我之后使用SqlDataReader对象时,我有一个可能的NullReference异常.

所以使用以下代码:

using (SqlConnection connection = GetConnection())
{
    using (SqlCommand cmd = connection.CreateCommand())
    {
        cmd.CommandText = ; //snip

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                //snip
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

while (reader.Read())行加下划线.

我的问题是读者对象何时会为空?我从来没有遇到它,文档没有提到它可能.我应该检查它是否为空或是否可以安全忽略?

为什么ReSharper认为它可能为null,例如它让我使用SqlCommand而不建议检查null?我猜是ExecuteReader方法有一个属性.

.net resharper sqlcommand nullreferenceexception

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

我应该把我的日志文件放在哪里用于asp.net应用程序?

我有一个ASP.NET应用程序,我们已经编写了自己的日志记录模块.

我的问题是,将日志文件写入的标准位置在哪里?即网站将作为匿名用户身份运行(例如IIS7上的IUSR),我需要一个我知道它有权写入的地方.

干杯,

asp.net permissions logging

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

自动滚动面板到底部

我在winforms中有一个面板,在其中我加载了一些用户控件.

每次添加新的用户控件时,我都想自动滚动到面板的底部(当我的面板填充时).我怎么能这样做?

.net c# winforms

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

给定指定强制转换的空合并运算符无效

有谁知道为什么最后一个不起作用?

object nullObj = null;
short works1 = (short) (nullObj ?? (short) 0);
short works2 = (short) (nullObj ?? default(short));
short works3 = 0;
short wontWork = (short) (nullObj ?? 0); //Throws: Specified cast is not valid
Run Code Online (Sandbox Code Playgroud)

.net c# casting null-coalescing-operator

10
推荐指数
2
解决办法
587
查看次数

在设置了控件的选定值后运行Javascript

简单的ASP.NET应用程序

我有两个下拉控件.在第一次下拉我有一个JavaScript onChange事件.JavaScript启用第二个下拉列表并从中删除一个值(在第一个下拉列表中选择的值).如果他们单击下拉列表的空白第一个值,则将禁用第二个下拉列表(并重置选项).

我还在该OnPreRender方法中有代码,该代码将根据第一个下拉列表的值启用或禁用第二个下拉列表.这样可以在代码中选择第一个下拉列表的值(加载用户设置).

我的问题是:

  1. 用户在第一个下拉列表中选择一些内容.第二个下拉列表将通过JavaScript启用.
  2. 然后他们改变第三个下拉,开始回发.在回发后,下拉列表处于正确状态(选择第一个值,启用第二个下拉列表).
  3. 如果他们然后单击后退按钮,则第二个下拉菜单将不再启用,但应该是因为在第一个下拉列表中选择了某些内容.

我试图通过加入启动脚本(将设置第二滴的正确状态下)ClientScript.RegisterStartupScript,但是当这个被称为第一个下拉拥有selectedIndex0,而不是它实际上是什么.我的猜测是选择的值在我的启动脚本之后设置(但仍然没有调用onChange脚本).

关于尝试什么的任何想法?

javascript asp.net

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