我有一个ToolStrip多个ToolStripDropDownButtons,每个都有一套DropDownItems.
当用户单击DropDownItem时,将显示复选标记.

默认情况下,可以单击多个项目,因此会出现多个复选标记.

我要做的是当用户点击一个DropDownItem时,应该取消选中其他已检查的项目.换句话说,DropDown列表中应始终只有一个已检查项.
我已经讨论了一段时间,但我无法弄清楚如何保留当前检查的项目,同时取消选中其他项目.
下面是我现在的代码.
private void subietm1ToolStripMenuItem_Click(object sender, EventArgs e)
{
UncheckOtherToolStripMenuItems(sender);
}
public void UncheckOtherToolStripMenuItems(object selectedMenuItem)
{
List<ToolStripDropDownButton> dropdownButtons = new List<ToolStripDropDownButton>();
foreach (ToolStripItem item in toolStrip1.Items)
{
if (item is ToolStripDropDownButton)
{
dropdownButtons.Add((ToolStripDropDownButton)item);
}
}
foreach (ToolStripDropDownButton btn in dropdownButtons)
{
foreach (ToolStripMenuItem d in btn.DropDownItems)
{
if (d.Checked)
d.CheckState = CheckState.Unchecked;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够对此有所了解,或者告诉我一个简单的方法,我将不胜感激.
谢谢.
我写了一个小应用程序.我已将数据库特定信息放在属性文件中.
db.url=jdbc:mysql://localhost:3306/librarydb
db.user=root
db.passwd=pas$w0rd
Run Code Online (Sandbox Code Playgroud)
当我构建应用程序以获取可执行jar文件时,属性文件包含在其中.将这些信息放在属性文件中的全部目的是允许用户更改这些信息,但这使得它变得不可能.
如何包含不包含jar文件的属性文件?有点像你在.NET应用程序中使用AppSettings文件.
我是Java的新手,所以如果你能把它分解为一系列步骤我会很感激.
谢谢.
编辑:
这就是我从程序中的属性文件中获取值的方法.
public class DatabaseHandler {
public static Connection connectToDb() {
Connection con = null;
Properties props = new Properties();
InputStream in = null;
try {
in = DatabaseHandler.class.getResourceAsStream("database.properties");
props.load(in);
in.close();
String url = props.getProperty("db.url");
String user = props.getProperty("db.user");
String password = props.getProperty("db.passwd");
con = DriverManager.getConnection(url, user, password);
} catch (Exception ex) {
Logger.getLogger(DatabaseHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return con;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用一个元组来存储这样的东西.
var accessLavels: (hasInventoryAccess: Bool, hasPayrolAccess: Bool)
accessLavels = (hasInventoryAccess: true, hasPayrolAccess: false)
Run Code Online (Sandbox Code Playgroud)
现在我要保存它NSUserDefaults.
NSUserDefaults.standardUserDefaults().setValue(accessLavels, forKey: "AccessLevelKey")
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误.
类型'(hasInventoryAccess:Bool,hasPayrolAccess:Bool)'不符合协议'AnyObject'
我该如何解决这个问题?如果它不可能,那么欢迎任何其他保存元组的建议.
谢谢.
我计划在Swift项目中使用Google Drive API.我正在尝试通过CocoaPods(v0.39.0)添加Drive SDK.下面是我的Podfile.
platform :ios, '8.0'
use_frameworks!
pod 'Google-API-Client/Drive'
Run Code Online (Sandbox Code Playgroud)
我use_frameworks!添加了标志,以便CocoaPods可以将Objective-C pod转换为Swift框架而不是静态库.
Pod安装成功.但是,当我构建项目时,我收到以下错误.
类"GTMHTTPUploadFetcher"的重复接口定义
删除DerivedData文件夹并清理项目不起作用.
我也试过没有添加use_frameworks!,然后通过桥接头方式添加库.这没有问题.事情是我所有其他依赖项工作与它打开.不幸的是,CocoaPods 不 支持仅针对某些pod 播放该标志.
是否有解决此问题的解决方法?
正如Google的文档中所述,Google工程师据称会监控使用google-drive-sdk标记的问题,所以我希望至少他们会看到这个问题并尽快解决.
我最近继承了一个 iOS 项目,它有框架并使用 CocoaPods。我正在尝试复制此设置,以便更好地理解。
它有两个框架(作为 Xcode 项目)命名 RaterCommon和RaterAPIKit.
这是它的最小化版本 Podfile(我删除了不必要的部分)。
platform :ios, '10.0'
inhibit_all_warnings!
use_frameworks!
workspace 'Rater'
target :Rater do
# various pods
end
target :RaterCommon do
project 'Libraries/RaterCommon/RaterCommon.xcodeproj'
end
target :RaterAPIKit do
project 'Libraries/RaterAPIKit/RaterAPIKit.xcodeproj'
end
Run Code Online (Sandbox Code Playgroud)
运行时 pod install,我收到此警告。
Podfile 包含框架或静态库目标(RaterCommon、RaterAPIKit),Podfile 不包含主机目标(嵌入框架的目标)。
而且我也无法将这些框架导入到我的主项目的源中。即使在 Xcode 中的链接框架和库以及嵌入式二进制文件中添加它们之后。它说没有这样的模块。
所以我试图围绕Objctive-C接口,代理和协议.所以我有一个问题:
委托是否必须在单独的文件中,或者它是否是您班级中定义的方法?
协议就像java接口吗?这是我理解它的方式,如果你使用这个协议它基本上让你实现方法.
我仍然对界面感到困惑.我很确定它们与java中的接口没有任何相似之处.也许它只是一个将在类中实现的变量声明.
我有一个带有两个标签页的TabControl.

如何使标签页适合TabControl的宽度,如下面的屏幕截图所示.

我尝试使用以下代码行,但它也不起作用.
tabControl1.SizeMode = TabSizeMode.FillToRight;
Run Code Online (Sandbox Code Playgroud) 我用Cocoapods.我对第三方库进行了一些更改,如果我运行pod update,所有这些更改都将被替换.跑步pod install做同样的事情.
有没有办法排除pod更新?或者一种安装单个pod而不影响其他pod的方法?
我们正在评估 Eureka Forms,并创建了一个带有几个 FieldRows 的简单表单。我看到如何从表单中获取所有值,以及如何使用 onChange()(逐个字符地)更改任何行时如何响应,但对我来说如何响应字段的编辑完全完成,而不是随着每个字符的输入而完成。
在普通的文本字段中,我们可以将视图控制器或 tableview 的单元格设置为文本字段的委托并响应 textField:didFinishEditing: 并在那里处理它。
如何使用 Eureka Forms 字段行做到这一点?
谢谢
我一直在一些小项目中使用Realm,我非常喜欢它.我希望继续在更大的项目中使用它,我正在寻找更好的结构我的数据访问层.
我遇到了这个类似的问题,并试图建立我在那里找到的信息.在那里讨论的方法是DAO模式,所以我给了它一个镜头.
这是我的模特课.
class Chat: Object {
dynamic var id: String = ""
dynamic var createdAt: Date = Date()
dynamic var creatorId: String = ""
dynamic var title: String?
let chatMessages = List<ChatMessage>()
override static func primaryKey() -> String? {
return "id"
}
convenience init(fromJSON json: JSON) {
self.init()
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个包含ChatDAOProtocol所有方便助手方法.
protocol ChatDAOProtocol {
func addMessage(_ message: ChatMessage)
func getChatThumbnail() -> UIImage
func getParticipants(includingMe: Bool) -> [Participant]?
static func getChat(fromId id: String) -> …Run Code Online (Sandbox Code Playgroud)