我是从 WPF 转向 Android 开发的。其中的所有内容都清晰简单,包括因为它可以在 Windows 操作系统中运行。应用程序在单独的进程中运行,并且窗口之间共享公共地址空间,这允许您创建自己的窗口类并向它们传递对象引用。在 Android 中,这不适用于活动。如果它有效,那么每个人都担心内存泄漏。因此,每个活动似乎都是孤立的,只能通过各种意图和捆绑接收数据的副本。对此,我有一个疑问。活动和其他组件在单独的 Linux 进程(可能是子进程)中运行,或者它们仍然代表一个公共进程的单独线程吗?我知道一些,OS Bindler中有一个特殊的程序,比如,只有它可以运行Android程序。感谢你的回答!
A B's questions
例如,我有一个状态为的容器Exited
。在运行时,一个文件被保存到容器中。如果容器的状态是,是否可以看到它Exited
?
凌晨 2 点出现的那种问题……谁从编写自由软件和浪费时间中受益?当然,有不同类型的软件。有些可能是试用版,有些是共享软件(例如,功能有限)。但我的意思是可以被认为是完全免费的程序。仅仅是利他主义和纯粹的主动性吗?
我的一个假设是,程序员曾经编写过他们需要的程序,并决定与他人分享。
如何为 WPF 中的各种对象正确组织 TreeView?我想看看这样的模型。
课程:
主要问题是如何在 WPF 中进行这种绑定。使用 MuiltiBinding 找到解决方案,但它们不起作用。现在,当在 TreeView HierarchicalDataTemplate 和 DataTemplate 资源中指定时,它可以工作,但如果 TreeObject 类具有返回一个新的 IEnumerable 的属性,所有现有列表都将添加到该属性,则它可以工作。在我看来,这在记忆中是不合适的,tk。该类已经有几个对象的列表。是的,我想尝试以不同的方式自定义每种类型的对象。这个问题没有任何具体的任务,只是有趣了很长时间,在漫长的搜索中,人们是如何做到的。感谢您的反馈!
很多时候,我必须将应用程序(如 wpf)连接到数据库。在示例和任务中,这种连接通常通过 windows 帐户发生,或者,上帝保佑,通过 sa 用户发生。
如何正确连接数据库?
我的假设是,对于客户端应用程序的每个角色,您都需要在服务器上创建自己的具有权限的帐户。
例如,连接如何与 VKontakte 应用程序一起工作?我认为他们有一个特定的数据库帐户,并且管理员已经通过他们自己的帐户对其进行了深入研究,并拥有完全的权限。
编辑 1:在这种情况下,我指的是数据库角色。那些。在服务器端,必须创建为应用程序定义的角色。根据我的假设,在到数据库的连接字符串中,我可以规定适当的登录名和密码。(当然,如果我的方向是正确的)
我正在 UserControl-ContentPresenter 包中制作页面界面。使用 Page-Frame,使用 UserControl-ContentPresenter 一切都很好。但我多次听说最好使用第二种选择。谁是对的? 这些哪个更好用?
当我将鼠标悬停在 UserControl 上时,如何使其放大?而目前的规模呢?
例如,我有一个 UserControl,它是用于在列表中显示学生的模板。你可以从它的内容中抽象出来。
我想为它创建一个 Click 事件,就像一个按钮,它从调用它的类(例如,窗口)中获取一个事件处理程序。是否可以创建这样的事件(类似于 DependencyProoerty)?能够简单地在标记中传递方法(再次,类似于按钮的单击事件)。好吧,或者其他事件(当您将鼠标悬停在用户控件上时等)
*找到另一种方式 - 在 Xaml 中更改 UserControl 声明并将继承更改为 Button。
一般来说,我需要从输入对象中获取它的构造函数和参数列表。最重要的是参数列表。是否有可能实现这样的事情:
Class Prime
{
Type t;
obj[] param;
public void addobj(object obj)
{
t = obj.GetType();
param = obj.GetParameter();
}
public object createobj()
{
return Activators.CreateInstanse(t,param)
}
}
要使 adobj 调用如下所示:
addobj(new Person("Vasya", 17);
这是我想要实现的(类似的),仅用于“后退”按钮,而不是指向站点的链接 - 指向 UserControl 的链接。最好还带有输出参数。 https://itchief.ru/lessons/javascript/javascript-history-object#:~:text=%D0%9F%D1%80%D0%B8%20%D0%BD%D0%B0%D0%B6% D0%B0%D1%82%D0%B8%D0%B8%20%D0%BD%D0%B0%20%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D1% 83%20%22%D0%9D%D0%B0%D0%B7%D0%B0%D0%B4,%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8 %20%D1%8D%D1%82%D0%BE%D0%B3%D0%BE%20%D0%BE%D0%BA%D0%BD%D0%B0%20(%D0%B2%D0% BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B8)
我整天绞尽脑汁,想不出更好的方法来组织页面界面的堆栈。但是我希望使用实现 INPC 的 Binding 和存储先前 UserControls 的 TYPES 而不是它们的对象的堆栈来将属性绑定到 ContentPresenter,因为 否则实例列表会使 RAM 变得混乱。并且在“打开”一个新的UC时,将其数据类型添加到堆栈中,关闭时,从堆栈中移除最后一个类型,并将创建的具有堆栈上先前数据类型的新实例分配给主属性(例如“返回新的 SomeType")。有可能做这样的堆栈吗?我认为这在委托的帮助下是可能的,但为此我必须在每个 ViewModel 上编写相同的逻辑。如果可能的话,我想自动化这一切。听说过 Type 数据类型,
//// 也许值得创建一个用数据类型描述方法和堆栈的类?唯一需要弄清楚的是如何返回或创建一个具有从堆栈接收到的数据类型的新对象。像这样的东西……我不知道。
class StackUC:INPC
{
private UserControl Uc;
public UserControl UC {get{return Uc;} set{Uc = value; OnPropertyChanged();}}
private Stack<Type> Stc = new Stack<Type>;
public Open(Type T)
{
UC = new T;
Stc.Add(T);
}
public Close()
{
Stc.Pop()
UC = new Stc.Peek();
}
}
//// 还有个想法,创建一个父类,继承UC的“打开”和“关闭”方法。
我离编程和配置1c还很远。
有一个服务目录,其中包含表格部分: 1) 必要商品 - 存储服务所需的商品清单。2) 选择性商品 - 存储有关商品的信息,可以为此服务选择其中之一。
在 1C 中,有一种机会,当从另一列的一个目录中选择一个元素时,您只能从另一个目录中选择与它相关联的那些元素(我不记得确切。如果你提醒我)。
是否有类似的可能性从表格部分显示产品列表,并相应地在表格部分中选择一个单独的元素?
我有课 Post_order
public class Post_zakaz
{
public Post_zakaz(int kod_t, string nazv_t, int kod_r, string nazv_r, double kol, double cena_ed)
{
this.kod_t = kod_t;
this.nazv_t = nazv_t;
this.kod_r = kod_r;
this.nazv_r = nazv_r;
this.kol = kol;
this.cena_ed = cena_ed;
this.obsh = kol * cena_ed;
}
public int index { get; set; }
public int kod_t { get; set; }
public string nazv_t { get; set; }
public int kod_r { get; set; }
public string nazv_r { get; set; }
public double kol { get; set; }
public double cena_ed { get; set; }
public double obsh { get; set; }
}
有一个变量用来存储从基数得到的值:
public static ObservableCollection<Post_zakaz> postzakazis = new ObservableCollection<Post_zakaz>();
接下来,有一个绑定到集合的 DataGrid:
<DataGrid Name="Grid" Grid.Row="1" ItemsSource="{Binding Mode=OneWay}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="№"></DataGridTextColumn>
<DataGridTextColumn Header="Товар" Width="*" IsReadOnly="True" Binding="{Binding Path=nazv_t}"></DataGridTextColumn>
<DataGridTextColumn Header="Разновидность" Width="*" IsReadOnly="True" Binding="{Binding Path=nazv_r}"></DataGridTextColumn>
<DataGridTextColumn Header="Количество" Width="*" Binding="{Binding Path=kol}" ></DataGridTextColumn>
<DataGridTextColumn Header="Цена за ед" Width="*" Binding="{Binding Path=cena_ed}"></DataGridTextColumn>
<DataGridTextColumn Header="Общая сумма" Width="*" Binding="{Binding Path=obsh}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
在“总金额”栏中,当“数量”或“单价”字段之一发生更改时,应重新计算“总金额”。现在只在填写的时候计算,因为 Post_zakaz类的obsh字段被分配一次。
我了解您需要为班级实施 INotifyPropertyChanged 吗?虽然我离它很远,但我正在努力理解。
如何正确实施这个想法? 也许您可以以某种方式更改 DataGrid 本身中的列?
现在,我对绑定了解不多。更准确地说,我完全不明白。所以,这是我的问题:我会马上预订:我非常清楚在这个阶段我在这种情况下和我的脑海里都有粥。如果您有资料或多或少清楚地描述了该主题,请写下它。
我有一个显示成分信息的表格。此表单有两个 ListView:用于品种和产品。
所有数据均取自 SQL 数据库。每种成分都有一组与之相关的品种和产品。
数据库中还没有项目。
错误是条目在品种的ListView中重复了三次。
我在这种形式的类中编写了显示类(这很可能是不正确的)。这是他的代码:
public class Raznovidnosti : INotifyPropertyChanged
{
private string kod, nazv;
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public string Kod
{
get { return kod; }
set { kod = value; RaisePropertyChanged("Kod"); }
}
public string Nazv
{
get { return nazv; }
set { nazv = value; RaisePropertyChanged("Nazv"); }
}
}
为了将数据输入到这个类中,我在对应的表中做了一个 foreach 循环,它返回了查询的结果。
SqlCommand s5 = new SqlCommand(@"Select Kod, Nazv from Raznovidnosti_ingr where Kod_ingr = " + Util.Get_kod_i(), con);
SqlDataAdapter da5 = new SqlDataAdapter(s5);
da5.Fill(raznt);//table запись в таблицу
foreach (DataRow ro in raznt.Rows)
{
Raznovidnosti r = new Raznovidnosti();
r.Kod = ro[0].ToString(); r.Nazv = ro[1].ToString();
razn_cl.Add(r);// razn_cl переменная имеет тип данных List<Raznovidnosti>
}
DataContext = razn_cl;
此外,绑定,甚至没有考虑其正确性:
<ListView Grid.Row="1" Name="Raz" ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Nazv}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
添加时(通过新窗口添加)也应该有更新的实现。自然,所有内容都通过请求添加到数据库中。
有哪些解决方案?例如,是否可以不绑定到类,而是绑定到表字段。
我完全明白,在这个阶段,我在这种情况下和我的头脑中都一团糟。如果您有资料或多或少清楚地描述了该主题,请写下它。
我想在 WPF C# 应用程序中实现关闭未聚焦的 TabControl。
创建选项卡时,会为该选项卡标题中的关闭按钮分配一个索引,但事实是,当您删除选项卡时,例如在中间,选项卡本身的索引顺序会发生变化。因此,按钮标签将与此选项卡的索引不匹配。
为了更清楚,这里有一个例子: Button tag |0 1 2 3 4 5 Index on|0 1 2 3 4 5
关闭,例如,第三个选项卡:
按钮标签 |0 1 2 4 5 索引打开|0 1 2 3 4
存在不匹配。有些公式没用。
这是代码:
public void New_TabControl(string n, Page p)
{
TabItem ti = new TabItem();
DockPanel dp = new DockPanel();
Label l = new Label();
Button b = new Button();
Frame f = new Frame();
ti.MaxHeight = 50;
ti.MaxWidth = 150;
l.Content = n;
l.MaxWidth = 100;
b.Content = "x";
b.Width = 30;
b.Click += new RoutedEventHandler(Close_Tab);
ti.Header = dp;
ti.Content = f;
f.Content = p;
dp.Children.Add(l);
dp.Children.Add(b);
TB.Items.Add(ti);
ti.Focus();
b.Tag = this.TB.SelectedIndex;
}
public void Close_Tab(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
MessageBox.Show(b.Tag.ToString() + TB.SelectedIndex.ToString());
TB.Items.RemoveAt(Convert.ToInt32(b.Tag));
}
是否可以防止标签索引更改?如何正确实施?或者您是否需要做一些诸如存储当前选项卡和焦点标签的表格之类的事情?
为了显示矢量图像,计算机会计算公式。位图使用像素数组。对于将在小分辨率且无法缩放的屏幕上运行的程序,使用什么更好?
我在 Internet 上找不到使用 DataTable 更改记录的充分解释。如果有人有资源链接,我将不胜感激。
当我单击一个按钮时,我需要检查 Kod_Menu 字段的 DataTable 中是否有一个条目,其中包含传递给 Button.Tag 的代码。如何正确实施?
public void Mouse_Click_Menu(object sender, RoutedEventArgs e)
{
Button B = (Button)sender;
SqlConnection conK = Util.ConnectBD.Get_KDB();
SqlCommand Cena = new SqlCommand("Select Cena from _Menu where Kod_Menu = " + B.Tag, conK);
SqlCommand Nazv = new SqlCommand("Select Nazv_Menu from _Menu where Kod_Menu = " + B.Tag, conK);
float cena = Convert.ToSingle(Cena.ExecuteScalar());
string nazv = Nazv.ExecuteScalar().ToString();
//Проверка на наличие номенклатуры в DataTable
DataRow[] row = Sostav.Select("*", "Kod_menu=" + B.Tag);//Попытка получить нужную строку, а после запустить цикл foreach
if (row != null)
{
int i = 0;//Переменная, которая должна хранить значение количества из полученной строки
i = Convert.ToInt32(row[0]["Kol"]);//преобразование
MessageBox.Show(i.ToString());//попытка проверить полученное значение
//Здесь что-то должно быть, но я уже запутался.
Sostav.Rows.Add(new object[] { kod_z, B.Tag, nazv, i+1, cena });//вместо добавления строки должно быть обновление
}
else
{
Sostav.Rows.Add(new object[] { kod_z, B.Tag, nazv, 1, cena });
}
List_Zalkaz();
}
有想法从找到的记录中获取数量值,删除该记录,然后添加一个新值。请提供帮助,至少有一些来源可以找到有关此信息的信息。我一直在寻找和搜索很长时间,没有任何工作。
有些东西起作用了,然后坏了!数据库中充满了数据。一切正常。Get_Kod_Zakaz 查询返回 null,查询在 SQL 中工作。
private void Load_Form(object sender, EventArgs e)
{
SqlConnection conK = Util.ConnectBD.Get_KDB();
SqlParameter Kod_Sotr = new SqlParameter("@Kod_S", Proxy.Author_Class.Get_Kod_Sotr());
SqlCommand Insert_Zakaz = new SqlCommand("INSERT INTO Zakaz (Status, Kod_Sotr) values (5, @Kod_S)", conK);
Insert_Zakaz.Parameters.Add(Kod_Sotr);
SqlCommand Get_Kod_Zakaz = new SqlCommand("SELECT SCOPE_IDENTITY()", conK);
Insert_Zakaz.ExecuteNonQuery();
kod_z = Convert.ToInt32(Get_Kod_Zakaz.ExecuteScalar());
//при запуске добавлять запись в таблицу заказов
}
我有一个带按钮的面板,两个文本框。当我运行表单时,我单击登录文本框,然后单击按钮输入一个数字。但这不会发生。如何获取要输入到所选文本框中的按钮的值?
我是 C# 编程的新手(正如预期的那样)。也许我做错了什么,但我在互联网上没有找到类似的东西。谢谢!
private void Cl_tl(object sender, RoutedEventArgs e) //событие нажатия на клавишу 0
{
Button B = (Button)sender; //присваивание переменной b значение текущей нажатой кнопки
if (Log.IsFocused) // если фокус установлен на текстовое поле логина, то прибавить символ к текущей строке текстбокса логина
{
Log.Text += B.Content;
Log.Focus();
}
if (Pas.IsFocused) //аналогично с текстбоксом пароля
{
Pas.Password += B.Content;
Pas.Focus();
}
}