看起来很简单,但我找不到一个好方法.
在第一页说我创建一个变量
$myVariable = "Some text";
Run Code Online (Sandbox Code Playgroud)
表单对该页面的操作是"Page2.php".所以在Page2.php中,我怎样才能访问该变量?我知道我可以用会话来做,但我认为这对于一个简单的字符串来说太过分了,我只需要传递一个简单的字符串(文件名).
我怎样才能做到这一点?
谢谢!
我正在玩这些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#中,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相比并得到真实?
问题是我需要知道它是否是版本3.5 SP 1. Environment.Version()只返回2.0.50727.3053.
我找到了这个解决方案,但我认为这需要花费更多的时间而不是它的价值,所以我正在寻找一个更简单的解决方案.可能吗?
这是我对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搜索并尝试了很多东西,但未能这样做.有帮助吗?
谢谢!
所以在我正在做的这个特定的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) 这是:
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)
谢谢.
我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.有关如何做到这一点的任何想法?
谢谢!
我冒这个冒险,这可能是一个新问题但是这里有.我很想将一个方法添加到一个类中,该类可能在给定时间内有数千个实例存储在内存中.现在,另一个选择是使用静态方法创建静态类,并在那里创建[静态]方法,而不是在类中创建实例方法.像这样的东西:
这个:
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)
我只是想知道静态类替代是否会占用更少的内存.
谢谢!
我有这种情况,我想在所有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,但是有一些设计问题阻止我们这样做.有没有其他方法可以实现共享列宽?
这是我想要实现的(具有相同颜色的列应该共享宽度):

提前致谢.