我正在尝试学习自定义事件,我试图创建一个但看起来我有问题
我创建了一个Form,静态类和自定义事件.我想要实现的是当我按下按钮时,Form会调用静态类函数,然后func会不时地发出一个事件来报告当前状态.Form1将监听事件是否被引发,如果是,它将更改label1的Text
这是我到目前为止所拥有的
public partial class Form1 : Form
{
public EventHandler<Progress> progress;
public Form1()
{
InitializeComponent();
progress += SetStatus;
}
private void SetStatus(object sender, Progress e)
{
label1.Text = e.Status;
}
private void button1_Click_1(object sender, EventArgs e)
{
TestClass.Func();
}
}
Run Code Online (Sandbox Code Playgroud)
档案2
class TestClass
{
public static void Func()
{
//time consuming code
Report status
// time consuming code
report status
}
}
public class Progress : EventArgs
{
public string Status { get; private set; }
private Progress() …Run Code Online (Sandbox Code Playgroud) 在探索botframeworkv4C# 中的新预览时,我遇到了一个案例,我需要对某个频道执行特定操作。在 中botframeworkv3,我曾经使用过访问所有频道字符串名称,ChannelIds但在这里找不到。
"facebook"例如,我知道我可以直接编写,但是使用提供的列表可以防止任何拼写错误并提高可读性。
因此,ChannelIdsin的等价物是botframeworkv4什么?
我正在使用WPF,我导入了System.Windows.Form引用.这是我的代码:
Process[] process = Process.GetProcessesByName("wmplayer");
SetForegroundWindow(process[0].MainWindowHandle);
Thread.Sleep(200);
System.Windows.Forms.SendKeys.Send("^p");
Run Code Online (Sandbox Code Playgroud)
Windows Media Player执行聚焦,但未收到任何击键.为什么?
使用 Kotlin 时,可以使用apply设置现有对象的多个属性并保持代码更清晰,例如,而不是:
person.firstName = "John"
person.lastName = "Doe"
person.phone = "123 456 789"
Run Code Online (Sandbox Code Playgroud)
我们可以用:
person.apply {
firstName = "John"
lastName = "Doe"
phone = "123 456 789"
}
Run Code Online (Sandbox Code Playgroud)
是否有与applyC# 中的等效项?
最接近的是,using但据我所知,它不能以这种方式使用。
编辑:我知道C# 中的对象初始值设定项,但实际上我正在寻找可以为现有对象(例如从数据库中获取的对象)完成的操作。
我正在寻找一种方法将a的值转换string为等效System.Windows.Forms.Keys项.然后,此值将用于PressKey模拟相应的Key.我试过用KeyConverter这样的:
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void PressKey(System.Windows.Forms.Keys key, bool up)
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
if (up)
{
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
}
else
{
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
}
}
KeyConverter kc = new KeyConverter();
PressKey((System.Windows.Forms.Keys)kc.ConvertFromString(string), false);
Run Code Online (Sandbox Code Playgroud)
我需要的是string喜欢"Enter"被转换为System.Windows.Forms.Keys.Enter.但是KeyConverter没有返回任何东西.有什么想法吗?
我正在使用 Microsoft 的 C# Bot 框架开发机器人。我试图在用户发送任何内容之前向用户发送欢迎消息作为介绍。
经过研究,我HandleSystemMessage在a的情况下使用function和发送消息在某种程度上实现了这一点ConversationUpdate,如下所示:
if (activity.Type == ActivityTypes.ConversationUpdate)
{
IConversationUpdateActivity update = activity;
if (update.MembersAdded.Any())
{
foreach (var newMember in update.MembersAdded)
{
if (newMember.Id != activity.Recipient.Id)
{
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply = activity.CreateReply();
reply.Text("Hello, how can I help you?");
await connector.Conversations.ReplyToActivityAsync((Activity)bubble);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我用这种方法面临的问题:
我认为我的问题可以使用另一种ActivityType或者一些 Javascript 'hacky' 方式来解决,但直到现在我找不到解决方案。
我正在尝试使用新的android体系结构组件,但是一时我很困惑。
我创建了一个ViewModel类
public class BuyViewModel extends ViewModel {
private BuyRepository buyRepository;
private LiveData<Adverts> advertsLiveData;
private boolean isLoading;
private int currentPage;
@Inject
public BuyViewModel(BuyRepository buyRepository) {
this.buyRepository = buyRepository;
}
public void init(int currentPage) {
this.currentPage = currentPage;
if (this.advertsLiveData != null) {
return;
}
Timber.tag("logi").d("BuyViewModel > init -> ");
advertsLiveData = buyRepository.getAdverts(currentPage);
}
public LiveData<Adverts> getAdvertsLiveData() {
return advertsLiveData;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的LifeCycleFragment中观察LiveData
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
buyViewModel = ViewModelProviders.of(this, viewModelFactory).get(BuyViewModel.class);
buyViewModel.init(1);
buyViewModel.getAdvertsLiveData().observe(this, adverts -> {
Timber.tag("logi").d("BuyFragment …Run Code Online (Sandbox Code Playgroud) android viewmodel android-livedata android-architecture-components