小编Car*_*rlo的帖子

PHP Pass变量到下一页

看起来很简单,但我找不到一个好方法.

在第一页说我创建一个变量

$myVariable = "Some text";
Run Code Online (Sandbox Code Playgroud)

表单对该页面的操作是"Page2.php".所以在Page2.php中,我怎样才能访问该变量?我知道我可以用会话来做,但我认为这对于一个简单的字符串来说太过分了,我只需要传递一个简单的字符串(文件名).

我怎样才能做到这一点?

谢谢!

php variables session

189
推荐指数
6
解决办法
76万
查看次数

如何在等待中取消任务?

我正在玩这些Windows 8 WinRT任务,我正在尝试使用下面的方法取消任务,并且它在某种程度上起作用.CancelNotification方法被调用,这使您认为任务已被取消,但在后台任务继续运行,然后在完成后,任务的状态始终完成且永不取消.有没有办法在取消任务时完全停止?

private async void TryTask()
{
    CancellationTokenSource source = new CancellationTokenSource();
    source.Token.Register(CancelNotification);
    source.CancelAfter(TimeSpan.FromSeconds(1));
    var task = Task<int>.Factory.StartNew(() => slowFunc(1, 2), source.Token);

    await task;            

    if (task.IsCompleted)
    {
        MessageDialog md = new MessageDialog(task.Result.ToString());
        await md.ShowAsync();
    }
    else
    {
        MessageDialog md = new MessageDialog("Uncompleted");
        await md.ShowAsync();
    }
}

private int slowFunc(int a, int b)
{
    string someString = string.Empty;
    for (int i = 0; i < 200000; i++)
    {
        someString += "a";
    }

    return a + b;
}

private void CancelNotification() …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library .net-4.5

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

为什么double.NaN不等于自己?

谁可以给我解释一下这个?在C#中,double.NaN不等于double.NaN

bool huh = double.NaN == double.NaN; // huh = false
bool huh2 = double.NaN >= 0; // huh2 = false
bool huh3 = double.NaN <= 0; // huh3 = false
Run Code Online (Sandbox Code Playgroud)

我可以将什么常数与double.NaN相比并得到真实?

.net c#

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

有没有简单的方法来检查.NET Framework版本?

问题是我需要知道它是否是版本3.5 SP 1. Environment.Version()只返回2.0.50727.3053.

我找到了这个解决方案,但我认为这需要花费更多的时间而不是它的价值,所以我正在寻找一个更简单的解决方案.可能吗?

.net c#

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

在C#中获取log4net日志文件

这是我对log4net的配置:

<log4net>
    <appender name="MyLogger" type="log4net.Appender.RollingFileAppender">
        <file value="MyLog.log" />
        <appendToFile value="true" /> 
        <rollingStyle value="Size"/>
        <maxSizeRollBackups value="20"/>
        <maximumFileSize value="1000KB"/>
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss},%p,%m%n" />
        </layout>
    </appender>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="MyLogger" />
    </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

在C#中,我试图获取日志文件的名称(即MyLog.log).我用Google搜索并尝试了很多东西,但未能这样做.有帮助吗?

谢谢!

.net c# log4net

59
推荐指数
3
解决办法
5万
查看次数

ICommand MVVM实现

所以在我正在做的这个特定的MVVM实现中,我需要几个命令.我真的厌倦了逐个实现ICommand类,所以我提出了一个解决方案,但我不知道它有多好,所以任何WPF专家的输入都将非常感激.如果你能提供更好的解决方案,那就更好了.

我所做的是一个ICommand类和两个代理,它们将一个对象作为参数,一个委托是void(对于OnExecute),另一个是bool(对于OnCanExecute).因此,在我的ICommand的构造函数(由ViewModel类调用)中,我发送了两个方法,并在每个ICommand方法上调用委托的方法.

它的效果非常好,但我不确定这是不是一个糟糕的方法,或者是否有更好的方法.下面是完整的代码,任何输入都会非常感激,甚至是负面的,但请建设性的.

视图模型:

public class TestViewModel : DependencyObject
{
    public ICommand Command1 { get; set; }
    public ICommand Command2 { get; set; }
    public ICommand Command3 { get; set; }

    public TestViewModel()
    {
        this.Command1 = new TestCommand(ExecuteCommand1, CanExecuteCommand1);
        this.Command2 = new TestCommand(ExecuteCommand2, CanExecuteCommand2);
        this.Command3 = new TestCommand(ExecuteCommand3, CanExecuteCommand3);
    }

    public bool CanExecuteCommand1(object parameter)
    {
        return true;
    }

    public void ExecuteCommand1(object parameter)
    {
        MessageBox.Show("Executing command 1");
    }

    public bool CanExecuteCommand2(object parameter)
    {
        return true;
    }

    public void ExecuteCommand2(object parameter)
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf mvvm icommand

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

删除事件处理程序

这是:

Button.Click -= new EventHandler(Button_Click);
Run Code Online (Sandbox Code Playgroud)

与此相同:

Button.Click -= Button_Click;
Run Code Online (Sandbox Code Playgroud)

我问,因为对我来说,似乎前者正在删除对方法的新引用,而后者正在删除方法本身.但话说回来,如果程序员没有明确地分配它,那么新的EventHandler部分可能隐含在+ =或 - =重载中?

万一它是不同的如何

Button.Click -= new EventHandler(Button_Click);
Run Code Online (Sandbox Code Playgroud)

VS

Button.Click -= Button_Click;
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# events delegates

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

在代码中获取上下文菜单的所有者

ContextMenu喜欢这样的:

<StackPanel Orientation="Horizontal">
    <StackPanel.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Delete" Click="OnDeleteClicked" />
        </ContextMenu>
    </StackPanel.ContextMenu>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我需要获得StackPanel拥有该实例的实例ContextMenu.我已经尝试过了:

private void OnDeleteClicked(object sender, System.Windows.RoutedEventArgs e)
{
    FrameworkElement parent = e.OriginalSource as FrameworkElement;

    while (!(parent is StackPanel))
    {               
        parent = (FrameworkElement)LogicalTreeHelper.GetParent(parent);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在获得ContextMenuPopup父级之后VisualTreeHelper,它变为null,与之相同,它在获取之前变为null StackPanel.有关如何做到这一点的任何想法?

谢谢!

wpf contextmenu parent

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

C#静态vs实例方法

我冒这个冒险,这可能是一个新问题但是这里有.我很想将一个方法添加到一个类中,该类可能在给定时间内有数千个实例存储在内存中.现在,另一个选择是使用静态方法创建静态类,并在那里创建[静态]方法,而不是在类中创建实例方法.像这样的东西:

这个:

public static class PetOwner
{
    public static void RenamePet(Pet pet, string newName)
    {
        pet.Name = newName;
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

public class Pet
{
    public string Name { get; set; }

    public void Rename(string newName)
    {
        this.Name = newName;
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道静态类替代是否会占用更少的内存.

谢谢!

c#

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

ListView.ItemTemplate中的SharedSizeGroup

我有这种情况,我想在所有ListViewItems之间共享列大小,我在列定义上使用SharedSizeGroup但它不起作用:

<ListView ItemsSource="{Binding}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" SharedSizeGroup="A" />
                    <ColumnDefinition Width="Auto" SharedSizeGroup="B" />
                    <ColumnDefinition Width="Auto" SharedSizeGroup="C" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Margin="10,0" Text="{Binding Text1}" />
                <TextBlock Grid.Column="1" Margin="10,0" Text="{Binding Text2}" />
                <TextBlock Grid.Column="2" Margin="10,0" Text="{Binding Text3}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

我知道一个可能的解决方案是使用GridView作为ListView.View,但是有一些设计问题阻止我们这样做.有没有其他方法可以实现共享列宽?

这是我想要实现的(具有相同颜色的列应该共享宽度):

在此输入图像描述

提前致谢.

wpf grid layout xaml controls

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